2011-02-25 8 views
0

ここでは、http://bytes.com/topic/c-sharp/answers/447223-foreach-list-foreachを読んで、デリゲートループのパフォーマンスがforeachコマンドのパフォーマンスより低いことを伝えています。foreachとdelegateループの違いは何ですか?

私は両方の違いが何であるか知りたいです。なぜforeachが優れているのか、そしてその場合は委譲ループを使うだけです。

両方を比較している人はいますか?

答えて

1

これらの2つのソリューションを実装し、ILで比較することができます。

次に、重要な違いがあることがわかります。

パフォーマンスについて2つのアプリケーションを書きますが、診断では1ミリ秒のエントリを持つループを作成して実行します。その後、実行時間を比較します。

EDIT:

違いは、構文についてuknow法により確認

delegate StringListOperator(string s) 

public operate(StringListOperator operator) { 
    String.ForEach(operator); 
} 

I'nない100%の例の文字列リストの操作を行うことができ、デリゲートを使用して、利用状況にあるかもしれないが、私は願っていますあなたはポイントを持っています。

いくつかの方法でリストを反復する予定がある場合IMHOは単純なforeachを使用しますが、これは私のための構文砂糖のように見えます。

+0

私はあなたの言うことを知っていますが、私は他人が知っているものを得ることができます。なぜ私は本当にこのコードを書くのですか? –

0

パフォーマンスは通常問題にはなりませんが、デリゲートとforeachループの使用時には状態キャプチャに注意する必要があります。基本的に、コンパイラは、定数ではないループ内で使用されている変数を、ネストされたフィールドのセットにコピーします。これはときには望ましくない効果を呼び出すことがあります

関連する問題