c# - 数组从何处继承(即.int [])

con*_*att 10 .net c# arrays

在创建数组时,例如int [],这会继承任何东西吗?我认为它可能继承自System.Array,但在查看编译后的CIL后,它看起来并非如此.

我认为它可以从System.Array或somehting similair继承,考虑到你可以在数组上调用方法和访问属性.

int[] arr = {1, 2};
arr.Initialize();
arr.Length;
Run Code Online (Sandbox Code Playgroud)

Mic*_*tta 13

所有数组都来自System.Array.来自MSND杂志的一本(古老的)版本:

所有数组类型都是从System.Array隐式派生的,System.Array本身派生自System.Object.这意味着所有数组始终是在托管堆上分配的引用类型,并且应用程序的变量包含对数组的引用,而不是数组本身.

C#语言规范的第19.1.1节(强调我的):

System.Array类型是所有数组类型的抽象基类型.从任何数组类型到System.Array以及System.Array实现的任何接口类型都存在隐式引用转换(第13.1.4节).System.Array中存在显式引用转换(第13.2.3节),System.Array实现的任何接口类型都存在于任何数组类型.System.Array本身不是数组类型.相反,它是一个类类型,从中派生所有数组类型.