c# - 变量声明的区别 var 与 cast or

标签 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/

相关文章:

c# - 在内存中创建一个 "directory"?

c - 如何在编译时检测 long double 是否具有扩展精度

ios - 在 iOS 中动态添加一堆控件到屏幕

ios - 使用 objc_setAssociatedObject 时架构 armv7 的 undefined symbol

java - 读取 java exec 的输出

c# - 格式化字母数字字符串

c# - 在 .NET 中动态加载程序集的问题

c# - 为什么这个代码是冰川的?

c++ - 生成时CMake错误。项目使用Boost库

c++ - 在 C++ 中将二进制代码转换为汇编程序,反之亦然? (图书馆,变形)