1. ホーム
  2. c#

[解決済み] Enumerable.Rangeを使ったforeachと従来のforループの違いについて考える

2023-07-25 20:40:02

質問

C# 3.0では、このスタイルが気に入っています。

// Write the numbers 1 thru 7
foreach (int index in Enumerable.Range( 1, 7 ))
{
    Console.WriteLine(index);
}

を従来の for のループになります。

// Write the numbers 1 thru 7
for (int index = 1; index <= 7; index++)
{
    Console.WriteLine( index );
}

n'が小さいので性能は問題ないと仮定して、従来のスタイルよりも新しいスタイルに反対する人はいますか?

どのように解決するのですか?

後者の "minimum-to-maximum" の形式の方が、より明確だと思います。 Range の "minimum-count" のスタイルよりも、後者の "minimum-to-maximum" のフォーマットの方が、この目的ではずっと明確だと思います。 また、より早く、より短く、より身近で、明らかに明確でない規範からこのように変更することは、本当に良い習慣とは思えません。

とはいえ、私は一般的にこのアイデアに反対しているわけではありません。 もし、あなたが以下のような構文で私のところに来たとしたら、私はその構文に反対です。 foreach (int x from 1 to 8) のような構文があれば、私はおそらく、それが for のループよりも改善されると思います。 しかし Enumerable.Range はかなり不格好です。