web-dev-qa-db-ja.com

行う.. C#でwhileループ?

CでDo .. Whileループを作成するにはどうすればよいですか?

(編集:私はC#に移行しようとしているVB.NETプログラマーなので、.NET/VB構文の経験があります。ありがとう!)

24

一般的な形式は次のとおりです。

do
{
   // Body
} while (condition);

ここで、conditionbool型の式です。

個人的には、do/whileループを作成することはめったにありません-forforeachおよびストレートwhileループは、私の経験でははるかに一般的です。後者は次のとおりです。

while (condition)
{
    // body
}

whiledo...whileの違いは、最初のケースではボディがneverの条件がfalseで始まる場合に実行されますが、後者の場合は常に条件が評価される前に1回実行されます。

49
Jon Skeet

VB.NETから来ているとのことですので、比較を表示するために this link を確認することを強くお勧めします。 this wensiteを使用してVBからC#に、またはその逆に変換することもできます。既存のVBコードとループなど、息子の下にあるものを含め、C#でどのように見えるかを確認してください。

ループの質問に答えるには、次のようなことをしたいだけです。

while(condition)
{
   DoSomething();
}

あなたも行うことができます-このように:

do
{
   Something();
}
while(condition);

これが 別のコードトランスレータ でうまく使用できた 別のすばらしいC#-> VB比較Webサイト です。幸運を!

8
dferraro
//remember, do loop will always execute at least once, a while loop may not execute at all
//because the condition is at the top
do
{
  //statements to be repeated
} while (condition);
6
BlackICE

Do..whileコンストラクトの古典的な例をまだ誰も言及していないことは非常に驚くべきことです。 Do..whileは、コードを実行したり、何かをチェックまたは確認したり(通常、そのコードの実行中に何が起こったかに応じて)したいときの方法です。結果が気に入らない場合は、最初からやり直してください。これは、いくつかの制約に適合するユーザー入力が必要な場合に必要なものです。

bool CheckInput(string input) { ... }
...
string input;
...
do {
  input=Console.ReadLine();
} while(!CheckInput(input));

これは非常に一般的な形式です。条件が十分に単純な場合、それを計算するメソッドを用意するのではなく、ループ構成体( "while"キーワードの後の角かっこ内)に直接配置するのが一般的です。

この使用法の重要な概念は、ユーザー入力を少なくとも1回要求する必要があることです(最良の場合、ユーザーは最初の試行で正しく入力します)。ボディが少なくとも1回実行されるまで、この条件はあまり意味がありません。これらはそれぞれ、役立つヒントですが、仕事のためのツールですが、両方を組み合わせるとほぼ保証されます。

2
Edurne Pascual

Jon Skeetの答えは正しいですが、c#のwhiledo-whileに慣れていない人のために例を挙げておきます。

int i=0;
while(i<10)
{
    Console.WriteLine("Number is {0}", i);
    i++;
}

そして:

int i=0;
do
{
    Console.WriteLine("Number is {0}", i);
    i++;
}while(i<10)

両方が出力されます:

Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9

私たちが期待するように。ただし、do-whileループは、チェックに関係なく常に本体を最初に実行することを理解することが重要です。つまり、iの開始値を100に変更すると、非常に異なる出力が表示されます。

int i=100;
while(i<10)
{
    Console.WriteLine("Number is {0}", i);
    i++;
}

そして:

int i=100;
do
{
    Console.WriteLine("Number is {0}", i);
    i++;
}while(i<10)

ここで、whileループは実際には出力を生成しません。

ただし、do-whileループはこれを生成します。

Number is 100

これは10をはるかに超えていますが、これは、通常のwhileループとは異なり、do-whileループが常に1回実行されるという独特の動作によるものです。

1
Firestar9114

いくつかの数値を出力する簡単な例を次に示します。

int i = 0;

do {
  Console.WriteLine(++i);
} while (i < 10);
1
John Feminella
using System;

class MainClass
{
    public static void Main()
    {
        int i = 0;
        do
        {
            Console.WriteLine("Number is {0}", i);
            i++;
        } while (i < 100);
    }
}

別の方法は

using System;

class MainClass
{
    public static void Main()
    {
        int i = 0;
        while(i <100)
        {
            Console.WriteLine("Number is {0}", i);
            i++;
        }
    }
}
1
Art W

Anthony Pegramの回答とは別に、ループに入る前に条件をチェックするwhileループも使用できます。

while (someCriteria)
{
    if (someCondition)
    {
        someCriteria = false;
        // or you can use break;
    }
    if (ignoreJustThisIteration)
    {
        continue;
    }
}