TOC

This article has been localized into Japanese by the community.

Razor:

ループ

ループは非常に有用なプログラミングのテクニックであり、Razorコードにおいても有用なものです。ループを用いることで、動作や出力を特定の回数だけ繰り返すことができます。たとえばリスト上のアイテムを出力したりする場合です。この記事で見ていきましょう。

C#ではいくつかのループ構造が用意されており、Razorでもすべて利用可能です。氏名のリストというシンプルなデータを用いて、それらをすべて、一つ一つ確認してきましょう。リストはHTMLの順序なしリストに変換されます。

データソース

ビューファイルの先頭で以下のように氏名のリストを定義しましょう。

@{
List<string> names = new List<string>()
{
"John Doe",
"Jane Doe",
"Joe Doe",
"Jenna Doe",
"Doggy Doe"
};
}

ではさまざまなタイプのループをテストしてみましょう。

forループ

forループは、何回繰り返したかを常にトラッキングしたい場合に特に有用です。カウンタ変数(この例では i )に常にアクセスできるからです。

<ul>
@for (int i = 0; i < names.Count; i++)
{
<li>@names[i]</li>
}
</ul>

foreachループ

foreachループは、以下のようなタスクを実行したいときに最も使いやすいループです。

<ul>
@foreach (string name in names)
{
<li>@name</li>
}
</ul>

whileループ

以下のケースよりもwhileがもっと適しているユースケースはありますが、使えないことはありません。

<ul>
@{
int counter = 0;
}
@while(counter < names.Count)
{
<li>@names[counter++]</li>
}
</ul>

do...whileループ

whileループと同様、もっと適したタスクはありますが。whileループとdo...whileループの違いは条件文が評価されるタイミングです。whileループでは最初の繰り返しに入る前に条件文が評価されますので、ループはまったく実行されないこともあります。do...whileループでは最初の繰り返し後に条件文が評価されますので、最低でも1回はループが実行されます。

<ul>
@{
counter = 0;
}
@do
{
<li>@names[counter++]</li>
} while (counter < names.Count);
</ul>

breakとcontinue

これらのループに共通するのは、もちろん、break(ループから完全に脱出する)とcontinue(現在の繰り返しを中断して次の繰り返しに入る)ができることです。以下に示すforループでは、最大3名の氏名を出力したら if 文によりループを中断するように修正しています。

<ul>  
@for (int i = 0; i < names.Count; i++)  
{  
<li>@names[i]</li>  
@if(i >= 2)  
{  
<li>...and so on</li>  
break;  
}  
}  
</ul>

まとめ

C#と同じような方法で、Razorコードでもデータに対してループを行うことができます。また、上記の例で示したようにマークアップに飛び込んだり抜け出すこともできます。この記事では、Razor上でデータに対してどれほど簡単にループが実行できるかを解説しています。それぞれのループについてより詳しく理論を知りたい方は、別シリーズのC#チュートリアルをご覧ください。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!