-1

IEnumerable<int[]>インターフェイスを実装して current を保存するカスタム クラスがありますEnumerator。新しい要素を追加するときは、列挙子を最後の要素に設定する必要があります。

終了する列挙子を設定するサンプル コード:

IEnumerable<int> seq = ...
seq.Reset();
for (int i = 0; i < seq.Count; i++)
{
  seq.MoveNext();    
}

これをどのように速くしますか?(すべてのシーケンス要素をスクロールできない最後に移動できますか?)

4

2 に答える 2

1

高速化がコードの削減を意味する場合 (別の代替案)、

        IEnumerable<int> seq = ...

        while (seq.MoveNext())
        {
           var item = seq.Current;
        }


必要な編集seq.Last() これは拡張メソッドであり、上記のようなコードがあります。

EDIT2

私は seq.Current=seq.Last(); が必要です。

あなたのコードはに似ています

        IEnumerable<int> seq = ...
        int count=0;
        //Following while is equivalent to seq.Count
        while (seq.MoveNext()) 
        {
           count++;
        }
        int i=0;
        while (i<count)
        {
          seq.MoveNext();
        }

IEnumerator のみを使用すると、どこで停止するかわからないため、1 回の反復で seq.Current を Last に設定することはできません。

于 2012-05-14T11:20:57.993 に答える