0

我们将 Resharper 与 Visual Studio 一起使用。我有以下代码

 CMS.PortalEngine.PageInfo pageInfo = CMSContext.CurrentPageInfo;

但是,Resharper 建议我更改为

 var pageInfo = CMSContext.CurrentPageInfo;

这是为什么?我想通过声明 pageInfo var,编译器不会将它绑定到运行时的实际类型吗?怎样更有效率?

请分享您对此的看法

4

1 回答 1

0

的使用var与编译后的代码或其效率无关。它有时是强制性的——在处理匿名类型时——但使用不正确它不会编译。如果它确实编译,它将产生与你在赋值的 RHS 上显式使用表达式的类型时相同的代码。

有时,您可能希望在赋值的 LHS 上显式指定接口或超类型并利用隐式强制转换。这与使用 var 没有明确的等价物。例如

/* Given these classes */
class Animal {}
class Dog : Animal {}

/* This has no simple var equivalent */
Animal animal = new Dog();

/* Since this would make animal of type Dog */
var animal = new Dog();

/* But you can do this - don't why you'd want to though */
var animal = (Animal)new Dog();

在大多数情况下,使用 var 只是风格问题。

在 Resharper 中,您可以决定如何指示使用 var 的机会 - 查看 Settings>Code Insepction>Inspection Severity,其中两个条目与 var 相关:

  • 初始化显式声明类型时使用“var”关键字(默认为建议)
  • 尽可能使用 'var' 关键字(默认为提示)

您可以随意更改这些。

于 2013-10-22T21:56:46.827 回答