我知道基本抽象Array类没有实现泛型IEnumerable as
public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable
{
...
}
因此,当我创建诸如int[] i;
或string[] s;
之类的派生数组类时,它们是否实现IEnumerable<T>
?怎样查看[]
的源代码?
答案 0 :(得分:3)
有一个特殊类型SZArrayHelper
-数组包装。这是源代码:https://referencesource.microsoft.com/#mscorlib/system/array.cs,aa97964558672440
此外,数组实现IList
,它实现ICollection
,并且实现IEnumerable
。因此,Array实现了IEnumerable
答案 1 :(得分:2)
这里的官方用语
一个数组具有以下属性:
一个数组可以是一维,多维或锯齿状。
创建数组实例时,将确定维数和每个维的长度。这些值不能是 在实例的生存期内发生了变化。
数字数组元素的默认值设置为零,引用元素的默认值设置为null。
锯齿状数组是数组的数组,因此其元素是引用类型,并且被初始化为null。
数组的索引为零:具有n个元素的数组的索引从0到n-1。
数组元素可以是任何类型,包括数组类型。
数组类型是从抽象基本类型Array派生的引用类型。由于此类型实现了
findViewById
和IEnumerable
, 您可以在C#中的所有数组上使用IEnumerable<T>
迭代。
答案 2 :(得分:1)
您可以像这样简单地检查它:
exportApplicationsList(): void {
window.open('/api/applications/export');
}
结果是:
var type = typeof(int[]); // or any other type
foreach (var @interface in type.GetInterfaces())
Console.WriteLine(@interface);