【发布时间】:2013-05-11 15:49:52
【问题描述】:
C# 编译器有多聪明,考虑到以下几点:
float a = 1; //A
var b = 1f; //B
var c = (float)1; //C - Is this line equivalent to A and B?
var d = Convert.ToSingle(1); //D - Is this line equivalent to A and B?
据我所知,编译后A和B是等价的。其他行呢?
C 和 D 是在编译时优化为等同于 A 和 B 还是仅在运行时分配,导致更多处理来执行分配?
我认为强制转换 (C) 必须优化,而函数 (D) 则不能。
无论如何,我如何调查和比较使用 VS2012 生成的汇编代码?
【问题讨论】:
-
我很确定
var是在编译时计算的(至少是类型)。相对于dynamic -
1) 代码不会编译,因为您正在重新定义
x。给每一行一个不同的变量名。 2) 修复 #1 后,程序将可编译。与其向我们询问 a、b、c 和 d,不如自己编译程序并找出答案?会比在这里提问更快更容易。 -
@Jon 是的,已经编辑过 ;)
-
对不起,我没有提到这些行不是程序的一部分。我只是在这些方法之间进行比较。
标签: c# variables casting compiler-optimization var