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