【问题标题】:Keyword var performance for compilation用于编译的关键字 var 性能
【发布时间】:2015-07-21 22:50:05
【问题描述】:

重构一个大项目(就代码行而言)我了解了 ReSharper 和使用 var 而不是只会影响编译时间的类型的主题。 它对编译时间有很大影响吗?我想在我的公司中为它定义一个代码样式,但我不确定自己是否喜欢“过度使用”关键字 var 的想法......

【问题讨论】:

  • 我从未听说过var 对编译时间有影响。从技术上讲,它不再是任何其他常见和不常见的类型(var 是 3 个字符,int 是 3 个字符,但例如 string 是 5,所以比 var 长 66%,当然@ 987654326@ 更长),它应该使源代码更小,以便编译器加载更快。
  • 我认为这是您的选择,是否使用 var。我们在公司里讨论过这个问题,但没有达成一致。
  • 我认为它不会明显影响编译时间,但我确实对过度使用 var 关键字有一些强烈的看法......
  • 我能想到“var”会出现问题的唯一地方是在印刷出版物中,读者无法将鼠标悬停在变量上以找出它是什么。 “var” 可以节省大量时间和空间。当我对代码深处的某个类型改变主意时,我不必“修复”它上面的所有内容,因为它会自行修复。如果您想对此持迂腐态度并手动批准所有后果,那么我可以看到不允许使用 var ,这样每个连锁反应都会迫使人们关注它,但体面的测试覆盖率会让您知道是否有任何有害影响。
  • @DavidArno:编译器知道它,但开发人员通常不知道。即使今天一切正常,也可能是您或其他人需要维护它。然后更容易事先查看类型。话虽如此,var 在明显类型上是减少代码和防止水平滚动的好方法。

标签: c# visual-studio compilation resharper var


【解决方案1】:

它不会产生任何影响,因为 var 的类型在编译时得到解析,因为 C# 是静态语言。


在编译时,编译器会替换代码中 var 的实际类型。所以对编译器编译代码影响很小

例子:

var s = "hi";

被替换为

string s = "hi";

【讨论】:

  • 我仍然认为它不明显,但是当编译器必须遍历调用层次结构来确定返回类型时,差异会更加明显。想想嵌套的泛型方法...
  • 肯定还是要算出返回类型,这样才能检查RHS上的表达式是同一类型还是可以转换成LHS上声明的类型?
【解决方案2】:

根据我的经验,任何差异都可以忽略不计,甚至无法观察到。即使在较大的项目中,我也找不到任何区别。 var 产生的任何差异在统计上都是微不足道的,并且会在其余的编译工作中丢失。

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2010-12-17
    • 1970-01-01
    • 2011-08-10
    • 2020-11-14
    • 2022-12-31
    相关资源
    最近更新 更多