次の方法がある場合:
static void DoSomethingWithTwoNullables(Nullable<int> a, Nullable<int> b)
{
Console.WriteLine("Param a is Nullable<int>: " + (a is Nullable<int>));
Console.WriteLine("Param a is int : " + (a is int));
Console.WriteLine("Param b is Nullable<int>: " + (b is Nullable<int>));
Console.WriteLine("Param b is int : " + (b is int));
}
null をパラメーターとしてこのメソッドを呼び出すと、型チェックはこのパラメーターに対して false を返します。たとえば、このコード
DoSomethingWithTwoNullables(5, new Nullable<int>());
次の出力が得られます。
Param a is Nullable<int>: True
Param a is int : True
Param b is Nullable<int>: False
Param b is int : False
Nullable を使用して null を渡すときに型情報を保持する方法はありますか? この例で型をチェックしても意味がないことはわかっていますが、問題を示しています。私のプロジェクトでは、params object[]
配列を受け取り、オブジェクトの型を識別しようとする別のメソッドにパラメーターを渡します。このメソッドは、 と に対して異なることを行う必要がNullable<int>
ありNullable<long>
ます。