0

可能重复:
C# 'var' 与特定类型的性能

当我写下面的代码时:

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

resharper 想要将其转换为

var list = new List<string>();          

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

使用varRAM 的成本高于其他成本。不是吗?

4

4 回答 4

7

他们是一样的。var是隐式类型的。

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

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

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

Eric Lippert 有一篇关于var 这里的很棒的博客文章。

我认为你很困惑varand dynamic,这是两个完全不同的东西。该dynamic类型是一种允许您在运行时为其分配不同类型的值的类型。

于 2012-10-17T19:43:27.393 回答
3
var list = new List<int>();

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

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

于 2012-10-17T19:46:05.653 回答
1

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

于 2012-10-17T19:44:25.083 回答
0

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

于 2012-10-17T19:46:48.353 回答