使用list <type>或var keyword difference </type>

时间:2012-10-17 19:42:04

标签: c# resharper var

  

可能重复:
  C# ‘var’ vs specific type performance

当我写下代码时:

List<string> list = new List<string>();  

resharper希望将其转换为

var list = new List<string>();          

为什么呢?有什么不同? 它更容易理解吗?我想不是。

使用var比RAM上的其他成本更高。不是吗?

4 个答案:

答案 0 :(得分:7)

他们是一样的。隐式输入var

如果将鼠标悬停在Visual Studio中的关键字var上,它会显示您对象的类型 - 在本例中为List<string>。使用var只是为了清理代码 - 你已经知道你正在创建一个List<string>类型的对象,所以有些人认为输入是多余的:

List<string> list = new List<string>();

没有性能差异,因为编译器已经知道对象是什么类型。主要使用var个人偏好 - 如果你愿意,可以使用它,并且没有性能损失。

Eric Lippert撰写了一篇关于var here的精彩博文。

我认为你让vardynamic感到困惑,这是两件完全不同的事情。 dynamic类型是一种允许您在运行时为其分配不同类型值的类型。

答案 1 :(得分:3)

var list = new List<int>();

编译器使用右手的返回类型来确定列表的类型。在这种情况下List<string>。所以没有区别。只是缩短变量初始化的方法。

请注意,在声明字段时不能使用var。

答案 2 :(得分:1)

完全没有区别。唯一值得注意的是var关键字不会创建动态对象。它仍然是一个强类型对象,但编译器可以从变量声明语句的右操作数推断出类型。

答案 3 :(得分:0)

这背后的原因是,如果使用'var',重构会更容易。例如,如果从方法返回类型“Foo”然后将其转换为返回接口,则不必更改任何客户端代码 - 新类型将被推断并正确使用。