以下哪项执行速度更快,使用的内存最少:
var array = new string[5];
或
string[] array = new string[5];
另外,这些陈述之间有什么区别?
答案 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,第二个是显式类型定义。这里没有关于内存效率的内容