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