1

私はこのコードを持っています:

var numbers = new []{ 1,2,3 };
IEnumerable<int> evenNumbers = numbers.Where(i=> i % 2 == 0);

ここで、この「コレクション」を List に変換します。

evenNumbers = evenNumbers.ToList();

なぜ今、私はできるのにできevenNumbers.Count()ないのevenNumbers.Countですか?

と :

IList<int> evenNumbers = numbers.Where(i=> i % 2 == 0).ToList();

できます。IEnumerableevenNumbers = evenNumbers.ToList();をリストに具体化しませんか?

4

2 に答える 2

1

コンパイラにとって、evenNumbers は依然として IEnumerable 型です。あなたのコンパイラは、それが実際にリストであることを知りません。変数 'evenNumbers' の型は、派生型のオブジェクトを割り当てても変わりません。

于 2012-07-20T13:01:50.977 に答える
1

evenNumbersvariable はIEnumerable<int>代入後もまだです。インターフェイスで定義されているため、新しい変数タイプを作成するIList<int>か、プロパティList<int>を使用する必要があります。それが、2 番目の課題で行うことです。CountIList<T>

于 2012-07-20T13:02:15.167 に答える