不同的intellisense用于不同的数组声明

时间:2013-02-15 12:59:09

标签: c# .net arrays

我正在以下两种方式声明一个整数数组:

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

我假设变量numbersnumbers1都相似。但是我对这两者的智能感知是不同的。我为numbers1获得了更多选项。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

区别在于numbers1实施IEnumerable<int>以及IEnumerable; numbers仅实施IEnumerable

(基本上,numbers知道它是一个序列,但不知道序列的类型; numbers1知道它是{{1>的序列 }}Š。)

由于我在程序开始时有int行,因此我会在using System.Linq上使用很多的LINQ扩展方法,但只有少数{ {1}}。

(LINQ定义了查询数组和其他序列的方法。因为当你知道序列中的对象类型时,你只能对序列进行有趣的查询,很多方法只适用于numbers1序列,而不是普通的numbers序列。)

如果我取出IEnumerable<something>,我会在两个选项上获得完全相同的选项。

可能是你你自己IEnumerable定义了很多扩展方法,但它可能是LINQ。