ネットのIListのIEnumeratorを、リストの順序を提供していますか?
-
13-09-2019 - |
質問
私は(IEnumerator
インタフェースからIList
メソッドを呼び出すことによって)GetEnumerator
から入手IEnumerable
は、リストの順番に私にアイテムを与えることを前提とすることはできますか?
解決
のIListインターフェイスであるので、あなたは、することはできません、と実装は任意の順序で項目を列挙することができます。 IListのを、それが非決定論を含め、どのような方法で項目を列挙しています。例えば、私はWeirdListをimplemenentことができます。あなたが一方のリスト(T)を使用する場合、それは彼らがリストに格納されている順に項目を列挙するために保証します。
編集:言われていることの多くの他の人が指摘するように、ほとんどの実装は、リスト(T)のセマンティクスに従います。それはあなたが尋ねたものではありませんでしたが;)
他のヒント
列挙子を使用して、forループで0から長さ<1に行くリストのインデクサを使用するのと同じになり、メモリ内の位置にリストの相対的な内部のオブジェクトへのアクセス権を与える必要があります。
の編集を私は他の人が自分の実際の実装は何でもすることができ、これらのインタフェースを実装する必要があり、IListのを実装する.NETフレームワーククラスに関して、具体的に答えました。だから、実装に依存します。
はい、それは少なくともIList
のいずれかのまともな実装のために、まさにそれを行います。良いIList
は常にリストがインデックス化されているのと同じ順序で、その要素を列挙する必要があります。
List<int> list = new List<int> { 1, 1, 2, 3, 5, 8 };
IEnumerator<int> enumtor = list.GetEnumerator();
while (enumtor.MoveNext())
{
Console.Write(enumtor.Current);
}
プリント112358
ます。
このはのIListの実装に依存します。
所属していません StackOverflow