gpt4 book ai didi

c# - myNullableLong.HasValue 和 myNullableLong != null 之间有什么区别吗?

转载 作者:IT王子 更新时间:2023-10-29 03:56:22 24 4
gpt4 key购买 nike

例如,当我有一个可为空的 long 时,

之间有什么区别吗?
myNullableLong.HasValue 

myNullableLong != null

... 还是只是“语法糖”?

最佳答案

这只是语法糖。它们的行为方式完全相同 - 无论如何,无效性测试实际上被编译成对 HasValue 的调用。

示例:

public class Test
{
static void Main()
{
int? x = 0;
bool y = x.HasValue;
bool z = x != null;
}
}

IL:

.method private hidebysig static void  Main() cil managed
{
.entrypoint
// Code size 25 (0x19)
.maxstack 2
.locals init (valuetype [mscorlib]System.Nullable`1<int32> V_0)
IL_0000: ldloca.s V_0
IL_0002: ldc.i4.0
IL_0003: call instance void valuetype [mscorlib]System.Nullable`1<int32>::.ctor(!0)
IL_0008: ldloca.s V_0
IL_000a: call instance bool valuetype [mscorlib]System.Nullable`1<int32>::get_HasValue()
IL_000f: pop
IL_0010: ldloca.s V_0
IL_0012: call instance bool valuetype [mscorlib]System.Nullable`1<int32>::get_HasValue()
IL_0017: pop
IL_0018: ret
} // end of method Test::Main

关于c# - myNullableLong.HasValue 和 myNullableLong != null 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5233882/

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