可能性の重複foreachのために:
For vs Foreach loop in C#C#の:詩は
は、別のより良い方ですか?
for
ループのオーバーヘッドがforeach
よりも小さいと聞いたことがありますが、これについてはまだわかりません。
可能性の重複foreachのために:
For vs Foreach loop in C#C#の:詩は
は、別のより良い方ですか?
for
ループのオーバーヘッドがforeach
よりも小さいと聞いたことがありますが、これについてはまだわかりません。
あなたのアプリケーションによっては、他のものより「良い」ものがあることが異なります。あなたはちょうどデータ構造を読んでいますか?あなたはデータ構造に書いていますか?あなたはどんな種類のデータ構造も使用せず、数学をやっていますか?
それぞれ独自の用途があります。 for eachループは、通常、データ構造(配列、リンクされたリストなど)から物を読み取るために使用されます。例えば。
foreach(myClass i in myList)
{
int x = i.getX();
console.writeline(x);
}
ここで、forループを使用して、データ構造のエントリを更新するなどのことができます。
for (int i = 0; i < myList.count(); i++)
{
myList[i].x += i * 80;
}
あなたの最初のループはどの言語ですか?それはC#ではないからです。 –
たわごと、私の悪い。最近VBで作業をしていたので、最近は2つを混ぜてしまいました。一定。 – MGZero
foreach
インデックスを必要としない場合は(ほとんどのアプリケーションではほとんどの場合)、for
を使用します。より最適化されているため、アレイ全体のforeachは、実際のためにILに翻訳されている間
私は基本的なトランザクションサポートが必要なときに 'foreach'を使います。コレクションが列挙中に変更された場合、 'foreach'は例外をスローします - ' for'は返されません – STW
今日のコンパイラは、.NET 1.
のコンパイラよりもずっとよくなっています。 汎用コレクションのForeachは、汎用のienumeratorを返す点で最適化されており、linqにはその周辺のいくつかのneato最適化もあります。
したがって、答えは「はい」ですが、現実の答えは「いいえ」です。
あなたはすでに答えています:http://stackoverflow.com/questions/365615/in-net-which-loop-runs-faster-for-or-foreachを –
単一の変数をループの繰り返し処理のためにAを。 foreachループでは、イテレータオブジェクトの作成、イテレータ上の(おそらく仮想の)メソッドの呼び出しが必要であり、イテレータの処分が必要です。これはあなたのために肯定的な証拠ではないかもしれません(なぜそれが答えではないのか)。しかし、これを知っているとあなたは*証明が必要ではないかもしれません。 –
参考:とにかく、最初のページではなく、私が検索したときに重複は上がらなかった。 – jp2code