我见过All possible C# array initialization syntaxes,它显示了初始化数组的几种不同方法。
与使用_build_service
进行常规调用创建的实例相比,以下初始化是否会创建在某些方面有所不同的实例?
初始化:
new
与string[] strArray = {"one","two","three"};
答案 0 :(得分:1)
这是一种语法糖。编译器转换为:
string[] strArray = {"one","two","three"};
To This:
string[] expr_07 = new string[] {
"one",
"two",
"three"
};
上面的输出是使用Roslyn C#编译器。
答案 1 :(得分:1)
您无法初始化那些不存在的内容。所以,是的,确实创建了一个新实例,就像你已经编写new
运算符一样。它只是为您提供的便利,因为当您在宣布数据的同时初始化数据时,您不会强迫把它写出来(当在一个单独的语句中执行时,new
运算符是必需的,因为编译器不能假设你还没有预先为变量分配一个数组引用 - 这是最低限度的你可以单独声明strArray = new[] {...};
)。