1

我通过以下两种方式声明一个整数数组:

Array numbers = Array.CreateInstance(typeof(int), 10);
int[] numbers1 = new int[6];

我假设变量numbersnumbers1两者都是相似的。但是我为这两个得到的智能感知是不同的。我有更多的选择numbers1

为什么会这样?

4

1 回答 1

2

不同之处在于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。

于 2013-02-15T13:34:15.370 回答