これは、IReadOnlyCollection
(を実装するIEnumerable
) が必ずしも を実装するとは限らないindexing
ためですList
。IndexOf
からIList
です。
Dictionary
たとえば、インデックスのないコレクションを考えてみてください。 には数値インデックスの概念はありませんDictionary
。ではDictionary
、順序は保証されません。キーと値の間の 1 対 1 の関係のみです。したがって、コレクションは必ずしも数値インデックスを意味するわけではありません。
もう 1 つの理由は、IEnumerable
実際には双方向のトラフィックではないためです。このように考えてください:IEnumerable
は、指定した回数だけ項目を列挙して(つまり)x
の要素を見つけることができますが、その要素のいずれかがどのインデックス (つまり) にあるかどうかを効率的に知ることはできません。x
ElementAt
IndexOf
しかし、そうです、あなたがそれをこのように考えても、それが両方を持っているかElementAt
、IndexOf
または何も持っていないことを期待していても、それはまだかなり奇妙です.