現在、有効な int をメソッドに渡す必要があります。たとえば、次のように呼び出すことはできません。
getName("", 3);
最初の引数が type ではないため、コンパイル エラーが発生しますint
。
したがって、次の 2 つのオプションがあります。
- 呼び出し元がユーザー入力を に変換できるようにし
int
ます。
string
、object
またはのタイプを受け入れるようにメソッド シグネチャを調整しますNullable<int>
。
Nullable<int>
メソッドの呼び出し元が を通過できるようにしますnull
。を使用a.HasValue
して、ユーザーが合格したnull
か有効なint
. ( MSDN ドキュメント)
.NET Framework で値を変換するには、他に 3 つのオプションがあります。
int.パース
このメソッドは文字列パラメーターを受け取り、それをint
. 変換が失敗した場合、またはstring
がである場合null
、例外がスローされます。
int.TryParse
このメソッドは、string
および出力パラメータを取り、変換を試みます。失敗した場合、例外はスローされません。代わりに、このメソッドは Falls を返し、何をすべきかを決定できます。
Convert.ToInt32
このメソッドはオブジェクト型の引数を取ります。null をスローしませんが、デフォルト値を返します (int の場合、これは 0 です)。それ以外は、内部で int.Parse を使用します。
あなたの場合、次のようなことができます:
public XmlNode getName(string a, double b)
{
if ( string.IsNullOrWhiteSpace(a))
{
// Handle null case
}
int result;
if (!int.TryParse(a, out result)
{
// handle invalid int case
}
// Use result to get your XmlNode
}