【发布时间】:2013-08-27 17:11:21
【问题描述】:
如果有以下方法:
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>做不同的事情。
【问题讨论】:
标签: c#