我希望我不会因为提出如此基本的问题而受到抨击。我可以用谷歌搜索答案,但我想听听教科书上没有的东西。
我正在编写一个单元测试来验证我的IDictionary
键是顺序的。
由于Keys
属性是ICollection<T>
,我想枚举集合并将 Key 值打印到控制台。
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
导致编译器错误。
我在这里错过了枚举的基础吗?
干杯!
编辑:此外,两者之间是否存在性能差异?我知道我不能for
与 IDictionary 一起使用,但如果我使用 IList,我可以。移动是否for
比foreach
或 性能增益可以忽略不计