当您使用新的 C# 集合初始化语法时:
string[] sarray = new[] { "A", "B", "C", "D" };
编译器是否避免将每个数组槽初始化为默认值,或者是否等同于:
string[] sarray = new string[4]; // all slots initialized to null
sarray[0] = "A";
sarray[1] = "B";
sarray[2] = "C";
sarray[3] = "D";
最佳答案
编译器仍然使用 newarr
IL 指令,所以 CLR 仍然会初始化数组。
集合初始化只是编译器的魔法 - CLR 对此一无所知,因此它仍会假设它必须进行完整性检查。
但是,这应该非常非常快 - 它只是删除内存。我怀疑在很多情况下这会是一个很大的开销。
关于c# - C#集合初始化语法是否避免默认初始化开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014158/