C#如何在数组背后创建Array抽象类的实例?

时间:2019-05-29 09:41:43

标签: c# arrays abstract

我的意思是,当我们初始化这种语法糖时会发生什么?

var numbers = new int[] { 1, 2, 3, 4 };

1 个答案:

答案 0 :(得分:0)

如评论中所指出的,您可以使用Sharplab.io查看生成的IL。

我推荐HOW C# ARRAY INITIALIZERS WORK文章以了解详细信息。 特别是:

  • 它分配一个临时数组(以确保分配是原子的)
  • 它呼叫System.Runtime.CompilerServices.RuntimeHelpers::InitializeArray(class [mscorlib]System.Array, valuetype [mscorlib]System.RuntimeFieldHandle)
  • 传递给上述方法的值来自内部类,该内部类包含一个称为__StaticArrayInitTypeSize=16的私有嵌套结构
  • 呼叫后,已初始化的临时变量将分配给numbers变量。