C# “哪个更好?”;变量数组=…”;或;字符串[]数组=…“;?

C# “哪个更好?”;变量数组=…”;或;字符串[]数组=…“;?,c#,C#,以下哪项执行速度更快且使用的内存量最少: var array = new string[5]; 或 还有,这些语句之间有什么区别呢?没有区别。第一个是显式类型定义,第二个是显式类型定义。这里没有关于内存效率的内容,它将编译为完全相同的IL代码。将根据用法推断数组变量的类型,在第一种情况下,编译器将生成字符串[]类型的变量 请阅读MSDN的相关内容: 从Visual C#3.0开始,在方法中声明的变量 作用域可以具有隐式类型变量。隐式类型的局部变量 变量是强类型的,就像您声明了类型一样 但编译器

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

var array = new string[5];


还有,这些语句之间有什么区别呢?

没有区别。第一个是显式类型定义,第二个是显式类型定义。这里没有关于内存效率的内容,它将编译为完全相同的IL代码。将根据用法推断
数组
变量的类型,在第一种情况下,编译器将生成
字符串[]
类型的变量

请阅读MSDN的相关内容:

从Visual C#3.0开始,在方法中声明的变量 作用域可以具有隐式类型变量。隐式类型的局部变量 变量是强类型的,就像您声明了类型一样 但编译器确定类型。以下两个 i的声明在功能上是等效的:

变量i=10;//隐式类型

int i=10//显式类型


编译器将它们视为同一事物。以下是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=newstring[5]

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

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

否,最终编译,将给出相同的结果这一个:
IL_0001:  ldc.i4.5    
IL_0002:  newarr      System.String
IL_0007:  stloc.0     // array