我们将 Resharper 与 Visual Studio 一起使用。我有以下代码
CMS.PortalEngine.PageInfo pageInfo = CMSContext.CurrentPageInfo;
但是,Resharper 建议我更改为
var pageInfo = CMSContext.CurrentPageInfo;
这是为什么?我想通过声明 pageInfo var,编译器不会将它绑定到运行时的实际类型吗?怎样更有效率?
请分享您对此的看法
我们将 Resharper 与 Visual Studio 一起使用。我有以下代码
CMS.PortalEngine.PageInfo pageInfo = CMSContext.CurrentPageInfo;
但是,Resharper 建议我更改为
var pageInfo = CMSContext.CurrentPageInfo;
这是为什么?我想通过声明 pageInfo var,编译器不会将它绑定到运行时的实际类型吗?怎样更有效率?
请分享您对此的看法
的使用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 相关:
您可以随意更改这些。