可能重复:
C# 'var' 与特定类型的性能
当我写下面的代码时:
List<string> list = new List<string>();
resharper 想要将其转换为
var list = new List<string>();
为什么?有什么不同?是不是更容易理解?我想不是。
使用var
RAM 的成本高于其他成本。不是吗?
可能重复:
C# 'var' 与特定类型的性能
当我写下面的代码时:
List<string> list = new List<string>();
resharper 想要将其转换为
var list = new List<string>();
为什么?有什么不同?是不是更容易理解?我想不是。
使用var
RAM 的成本高于其他成本。不是吗?
他们是一样的。var
是隐式类型的。
如果您将鼠标悬停var
在 Visual Studio 中的关键字上,它将向您显示对象的类型 - 在本例中为List<string>
. 的用途var
只是为了清理代码——你已经知道你正在创建一个类型的对象List<string>
,所以有些人认为键入是多余的:
List<string> list = new List<string>();
没有性能差异,因为编译器已经知道对象是什么类型。主要使用 var 个人偏好 - 如果您愿意,您可以使用它并且不会影响性能。
Eric Lippert 有一篇关于var
这里的很棒的博客文章。
我认为你很困惑var
and dynamic
,这是两个完全不同的东西。该dynamic
类型是一种允许您在运行时为其分配不同类型的值的类型。
var list = new List<int>();
编译器使用右手的返回类型来确定列表的类型。在这种情况下List<string>
。所以没有区别。只是更短的方法来初始化你的变量。
请注意,声明字段时不能使用 var。
完全没有区别。唯一值得注意的是该var
关键字不会创建动态对象。它仍然是一个强类型对象,但编译器可以从变量声明语句的右操作数推断出类型。
这背后的原因是,如果您使用“var”,则更容易重构。例如,如果您从方法返回类型“Foo”,然后将其转换为返回接口,则无需更改任何客户端代码 - 新类型将被推断并正确使用。