哪个更好,“var array = ...”或“string [] array = ...”?

时间:2014-01-19 19:54:07

标签: c#

以下哪项执行速度更快,使用的内存最少:

var array = new string[5];

string[] array = new string[5];

另外,这些陈述之间有什么区别?

3 个答案:

答案 0 :(得分:4)

编译器将它们视为同一件事。这是来自LINQPad的一些IL来表明:

var array = new string[5];

<强> IL:

IL_0001:  ldc.i4.5    
IL_0002:  newarr      System.String
IL_0007:  stloc.0     // array

string[] array = new string[5];

IL_0001:  ldc.i4.5    
IL_0002:  newarr      System.String
IL_0007:  stloc.0     // array

在第一个示例中,var关键字允许编译器推断array的类型。编译器将其视为string的数组,因此两个示例的结果IL代码完全相同。

答案 1 :(得分:2)

它将被编译为完全相同的IL代码。 array变量的类型将根据用法推断,编译器将在第一种情况下生成string[]类型的变量。

请阅读MSDN对var (C# Reference)所说的内容:

  

从Visual C#3.0开始,在方法中声明的变量   scope可以有一个隐式类型var。隐式键入的本地   变量是强类型的,就像你声明了类型一样   你自己,但编译器确定了类型。以下两个   i的声明在功能上是等价的:

     

var i = 10; //隐式输入

     

int i = 10; //明确输入

答案 2 :(得分:1)

没有区别。第一个是implicit type definition,第二个是显式类型定义。这里没有关于内存效率的内容