こんなに基本的なことを聞いても非難されないように願っています。グーグルで答えてもらえますが、教科書以外のことを聞きたいです。
IDictionary
キーがシーケンシャルであることを確認するための単体テストを作成しています。
Keys
プロパティはであるためICollection<T>
、コレクションを列挙して、キー値をコンソールに出力します。
for
単純なループを使用してキー値を出力しようとする場合:
for (int i = 0; i < unPivotedData.Count; i++)
{
Console.WriteLine(unPivotedData.Keys[i]);
}
次のコンパイルエラーが発生しました。
Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.ICollection<int>'
ただし、foreach
ループを使用した場合:
foreach(int key in unPivotedData.Keys)
{
Console.WriteLine(key);
}
すべてがうまくいきました。
インデクサーの機能と実装方法は理解していますが、どのように機能しforeach
ますか?foreach
がどのように機能するかはまだわかりませんfor
が、コンパイラエラーが発生します。
ここで列挙の基本が欠けていますか?
乾杯!
編集:さらに、2つの間にパフォーマンスの違いはありますか?IDictionaryで使用できないことはわかっていfor
ますが、IListを使用している場合は使用できます。for
またはよりも速く移動しますか、foreach
またはパフォーマンスの向上はごくわずかですか