7

今日の朝、いくつかの C# コードを使用していましたが、次のようなものがありました。

foreach(DataRow row in MyMethod.GetDataTable().Rows) {
//do something
}

したがって、言語フレームワークを完全に理解していないので、反復が行われるたびに GetDataTable() が呼び出されるのか、それとも 1 回だけ呼び出されて結果のデータ (行になる) が保存されるのかを知りたいと思います。ループするメモリ。いずれにせよ、新しいコレクションを宣言して保存し、そこから作業しました...

新しい変数を追加したので、代わりに次のようにしました。

DataRowCollection rowCollection = MyMethod.GetDataTable().Rows;
foreach(DataRow row in rowCollection) {
//do something
}

しかし、これが必要かどうかはよくわかりません。

前もって感謝します。

4

5 に答える 5

3

foreach ループは構文糖衣に過ぎない

var enumerator = MyMethod.GetDataTable().Rows.GetEnumerator();
while (enumerator.MoveNext())
{
    DataRow row = enumerator.Current;
    // Initial foreach content
}
于 2009-01-29T10:21:36.630 に答える
1

一度だけ呼び出されてから保存されます。

于 2009-01-28T18:57:08.593 に答える