C# 编译的关键字var性能
重构一个大项目(就代码行而言),我了解了ReSharper和使用var而不是只会影响编译时间的类型的主题。C# 编译的关键字var性能,c#,visual-studio,compilation,resharper,var,C#,Visual Studio,Compilation,Resharper,Var,重构一个大项目(就代码行而言),我了解了ReSharper和使用var而不是只会影响编译时间的类型的主题。 它对编译时间有很大影响吗?我想在我的公司里为它定义一种代码风格,但我不确定我自己是否喜欢“过度使用”关键字var的想法。这不会产生任何影响,因为var的类型在编译时得到解决,因为C是静态语言 在编译时,编译器将替换代码中变量所在的实际类型。因此对编译器编译代码的影响很小 例如: var s = "hi"; 被替换为 string s = "hi"; 根据我的经验,任何差异都是微不足道
它对编译时间有很大影响吗?我想在我的公司里为它定义一种代码风格,但我不确定我自己是否喜欢“过度使用”关键字var的想法。这不会产生任何影响,因为var的类型在编译时得到解决,因为C是静态语言
在编译时,编译器将替换代码中变量所在的实际类型。因此对编译器编译代码的影响很小 例如:
var s = "hi";
被替换为
string s = "hi";
根据我的经验,任何差异都是微不足道的,甚至是不可观察的。我找不到任何区别,即使是在更大的项目上。var产生的任何差异在统计上都是无关紧要的,并且在其余的编译工作中消失了。我从来没有听说过
var
对编译时间有影响。从技术上讲,由于它不比任何其他常见和不常见的类型长(var
是3个字符,int
是3个字符,但例如string
是5个字符,因此比var
长66%,当然Dictionary
更长),它应该使源代码更小,所以编译器的加载速度更快。我想这是你的选择,使用或不使用var。我们在公司里讨论过这个问题,但没有达成一致意见。我不认为它会对编译时间产生明显的影响,但我确实对过度使用var
关键字有一些强烈的意见……这是我唯一能想到的“var”的位置一个问题是在印刷出版物中,读者不能将鼠标悬停在变量上以找出它是什么。“var”可以节省大量的时间和空间。当我改变对代码深处某个类型的看法时,我不必“修复”它上面的所有内容,因为它会自行修复。如果你想学究式地对待它,并亲自批准所有的影响,那么我可以看到不允许var,这样每个涟漪效应都会迫使一个人关注它,但是适当的测试覆盖率会让你知道是否有任何有害影响。@DavidArno:编译器知道,但开发人员通常不知道。即使今天一切正常,也可能是你或其他人需要维护它。这样就更容易提前看到类型。话虽如此,var
在明显类型上是减少代码和防止水平滚动的一种很好的方法。我仍然不认为这有什么意义,但当编译器必须遍历调用层次结构以确定返回类型时,差异会更加明显。想想嵌套的泛型方法……当然它还必须找出返回类型,这样它才能检查RHS上的表达式是否是相同的类型,或者是否可以转换为LHS上声明的类型?