現在、有効な 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
}