簡體   English   中英

做..在C#中循環?

[英]Do .. While loop in C#?

如何在C#中編寫Do .. While循環?

(編輯:我是一名VB.NET程序員,試圖轉向C#,所以我確實有.NET / VB語法的經驗。謝謝!)

一般形式是:

do
{
   // Body
} while (condition);

conditionbool類型的某種表達。

就個人而言,我很少寫do / while循環 - forforeach和直接while循環在我的經驗中更常見。 后者是:

while (condition)
{
    // body
}

whiledo...while之間的區別在於,在第一種情況下,如果條件為false,則不會執行正文 - 而在后一種情況下,它總是在條件被評估之前執行一次。

由於您提到您來自VB.NET,我強烈建議您查看此鏈接以顯示比較。 您也可以使用 wensite將VB轉換為C#,反之亦然 - 這樣您就可以使用現有的VB代碼,看看它在C#中的樣子,包括循環和兒子下面的任何其他內容。

要回答循環問題,您只需要執行以下操作:

while(condition)
{
   DoSomething();
}

你也可以這樣做 - 雖然這樣:

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

這是我成功使用的另一個代碼翻譯器另一個很棒的C# - > VB比較網站 祝好運!

//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);

非常令人驚訝的是,還沒有人提到過do..while構造的經典例子。 當你想要運行一些代碼,檢查或驗證某些東西時(通常取決於執行該代碼期間發生的事情),並且如果你不喜歡結果,請重新開始。 當您想要一些符合某些約束條件的用戶輸入時,這正是您所需要的:

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

這是一個非常通用的形式:當條件足夠簡單時,通常將它直接放在循環結構上(在“while”關鍵字后面的括號內),而不是有一個計算它的方法。

這種用法的關鍵概念是你必須至少要求用戶輸入一次(在最好的情況下,用戶將在第一次嘗試時得到它); 並且在身體至少執行一次之前,條件並沒有多大意義。 這些都是很好的提示,雖然這是工作的工具,但它們在一起幾乎是一種保證。

這是一個打印一些數字的簡單示例:

int i = 0;

do {
  Console.WriteLine(++i);
} while (i < 10);
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++;
        }
    }
}

由喬恩飛碟雙向的答案是正確的,偉大的,但我想舉一個例子對於那些不熟悉whiledo-while在C#中:

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.這是因為do-while循環的獨特行為總是運行一次,而不像常規while循環。

除了Anthony Pegram的答案之外,你還可以使用while循環,它在進入循環之前檢查條件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM