c#关键字var是否会慢速编译?

时间:2017-04-05 13:27:13

标签: c# type-inference

C#具有var关键字,迫使编译器推断变量类型 c#编译器还必须检查变量的类型是否与赋值相符。

我听说var可以减慢编译速度,我不应该使用它,但我喜欢懒惰,让编译器为我工作,特别是你必须为{{1}声明的变量赋值在宣言期间。

因此,在大量使用的情况下,它是否会显着影响编译时间?

1 个答案:

答案 0 :(得分:6)

除非您有 HUGE 项目需要(数十个)分钟进行构建,否则var可能导致的任何性能差异都将无法察觉。< / p>

请记住,无论有没有var,编译器已经必须进行大量的类型兼容性检查,因此它已经具有“推断”类型的信息。避免var并不能消除此类型检查。

  

我听说var会减慢编译速度,我不应该使用它......

这听起来像是反对使用var的人提供的借口。

这导致了何时使用var的问题,以及 主题的意见和偏好不同;也许是合法的,有(可以说)过度使用的可能性。我的个人 偏好仅在三个相当明确的情况下使用var

  • 必须时,即匿名类型:var foo = new { Foo = 314 };
  • 当变量类型(非常)复杂时,通常是LINQ查询的结果
  • 当实际类型“完全明显”时:

    • var foo = (Foo) obj;var foo = obj as Foo;
    • var foo = new Foo();
    • var foo = Foo.Create();