質問

私は(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の実装に依存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top