我通过以下两种方式声明一个整数数组:
Array numbers = Array.CreateInstance(typeof(int), 10);
int[] numbers1 = new int[6];
我假设变量numbers
和numbers1
两者都是相似的。但是我为这两个得到的智能感知是不同的。我有更多的选择numbers1
。
为什么会这样?
不同之处在于numbers1
实现IEnumerable<int>
以及IEnumerable
; numbers
只实现IEnumerable
。
(基本上,numbers
知道它是一个序列,但不知道它是什么类型的序列;numbers1
知道它是 s 的序列int
。)
由于我using System.Linq
在程序的开头有一行,所以我得到了很多LINQ 扩展方法可以使用 on numbers1
,但只有少数 on numbers
。
(LINQ 定义了查询数组和其他序列的方法。由于只有在知道序列中有什么类型的对象时才能对序列进行有趣的查询,所以很多方法仅适用于序列,而不适用于普通序列。)IEnumerable<something>
IEnumerable
如果我取出using System.Linq
,我会在他们两个上得到完全相同的选项。
可能是你自己定义了很多扩展方法IEnumerable<int>
,但很可能是 LINQ。