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

Mac*_*eja 1 c# type-inference

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

我听说var可以减慢编译速度,我不应该使用它,但我喜欢懒惰,让编译器为我工作,尤其是你必须为声明var 期间声明的变量赋值.

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

Ðаn*_*Ðаn 6

除非您有需要(数十分钟)时间构建的巨大项目,否则可能导致的任何性能差异都将无法察觉.var

请记住,无论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();

  • @Rawling毫无疑问......如果你不喜欢在编译时"丢失"打字(你真的不能做任何"错误的"),你也不会成为"动态"的粉丝.与所有工具一样,了解如何正确使用它们非常重要. (2认同)