【问题标题】:Variable declaration differences var with cast or [duplicate]变量声明差异 var 与 cast 或 [重复]
【发布时间】:2015-11-12 16:56:03
【问题描述】:

两个声明之间是否有任何背景差异:

var x = (string)null;

string x = null;

运行时会以不同的方式处理此声明吗?编译器会产生相同的 IL 吗?

【问题讨论】:

    标签: c# compilation runtime


    【解决方案1】:

    是的,它产生相同的 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 变量。

    【讨论】:

      【解决方案2】:

      在第一种情况下,编译器不知道x 的类型,除非您在强制转换中指定它。然而,在这两种情况下,生成的 IL 代码是相同的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-28
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-26
        • 2013-05-23
        • 1970-01-01
        相关资源
        最近更新 更多