<分区>
两个声明之间是否有任何背景差异:
var x = (string)null;
和
string x = null;
运行时会以不同的方式处理这个声明吗?编译器会生成相同的 IL 吗?
标签 c# compilation runtime
<分区>
两个声明之间是否有任何背景差异:
var x = (string)null;
和
string x = null;
运行时会以不同的方式处理这个声明吗?编译器会生成相同的 IL 吗?
最佳答案
是的,它产生相同的 IL:
void Main()
{
var x = (string)null;
string y = null;
}
产生(关闭优化):
IL_0000: nop
IL_0001: ldnull
IL_0002: stloc.0 // x
IL_0003: ldnull
IL_0004: stloc.1 // y
IL_0005: ret
从编译器的角度来看,您正在将 null
分配给 string
变量。
关于c# - 变量声明的区别 var 与 cast or,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32094697/