使用和不使用new运算符的数组初始化的差异

时间:2016-08-05 16:07:41

标签: c# initialization new-operator

我见过All possible C# array initialization syntaxes,它显示了初始化数组的几种不同方法。

与使用_build_service进行常规调用创建的实例相比,以下初始化是否会创建在某些方面有所不同的实例?

初​​始化:

new

string[] strArray = {"one","two","three"};

相比

2 个答案:

答案 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[] {...};)。