gpt4 book ai didi

c# - 对 Nullable 进行类型检查

转载 作者:太空狗 更新时间:2023-10-29 22:33:20 25 4
gpt4 key购买 nike

如果有以下方法:

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> .

最佳答案

直奔根本问题,不,你不能这样做。空 Nullable<int>具有与 null Nullable<long> 完全相同的盒装表示形式,或者确实是一个“正常”的空值。无法判断空值的“类型”是什么,因为它的底层表示只是全零。参见 Boxing Nullable Types了解更多详情。

关于c# - 对 Nullable<int> 进行类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com