c# - C#集合初始化语法是否避免默认初始化开销

标签 c# optimization compiler-construction c#-3.0

当您使用新的 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/

相关文章:

c# - Magento Web 服务错误

c# - 如何在 C# 中检测 Windows Server 2008 上的防病毒软件?

performance - 存储转发地址与数据 : What the difference between STD and STA in the Intel Optimization guide?

python - 将分类 Pandas 系列转换为字符串的快速方法

windows - Windows 上的 Mac 编译器

c# - 在 Visual Studio 中查看运行时的变量值

python - 在scipy的least_squares函数中使用Levenberg-Marquardt方法

java - Eclipse 自定义 java 编译器

c# - 构造一个简单的解释器

关于 Equals 实现的 C# 不同 MSDN 指南