do 循环
  do 循环 以下述方式执行:执行标记为循环的代码,然后进行一个布尔测试,如果测试结果为 true,就再次执行这段代码,并重复这个过程。当测试结果为 false 时,就退出循环。
do 循环的结构如下:
        do
        {
            <code to be looped>
        } while (<Test>);
其中计算 <Test> 会得到一个布尔值。
⚠️ while 语句之后必须使用分号。
例如,使用该结构可以把从 1~10 的数字输出到一列上:
int i = 1; do { Console.WriteLine("{0}", i++); } while (i <= 10);在把
i的值写到屏幕上后,使用后缀形式的++运算符递增i的值,所以需要检查一下i <= 10,把 10 也包含在输出到控制台的数字中。
下面的示例使用这个结构略微修改一下本节引言中的代码。该段代码计算了一个账户在 10 年后的余额。这次使用一个循环,根据起始的金额和固定利率,计算该账户的金额要花多长时间才能达到某个指定的数值。
  把下述代码添加到 Program.cs 中:
        static void Main(string[] args)
        {
            double balance, interestRate, targetBalance;
            Console.WriteLine("What is your current balance?");
            balance = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("What is your current annual interest rate(in %)?");
            interestRate = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0;
            Console.WriteLine("What balance woule you like to have?");
            targetBalance = Convert.ToDouble(Console.ReadLine());
            int totalYears = 0;
            do
            {
                balance *= interestRate;
                ++totalYears;
            } while (balance < targetBanlance);
            Console.WriteLine("In {0} year{1} you'll have a balance of {2}.",
                                totalYears, totalYears == 1 ? "" : "s", 
                                balance);
            Console.ReadKey();
        }
示例的说明
这段代码利用固定的利率,对年度计算余额的过程重复必要的次数,直到满足条件为止。在每次循环中,递增一个计数器变量,就可以确定需要多少年:
int totalYears = 0; do { balance *= interestRate; ++totalYears; } while (balance < targetBalance);然后就可以将这个计数器变量用作输出结果的一部分:
Console.WriteLine("In {0} year{1} you'll have a balance of {2}.", totalYears, totalYears == 1 ? "" : "s", balance);
- 这可能是
 ? :(三元)运算符最常见的用法了 --用最少的代码有条件地格式化文本。这里,如果totalYears不等于 1,就在year后面输出一个 s。
  do 循环至少执行一次。有时(如这个示例)这并不是很理想。当然,可以添加一个 if 语句。
        int totalYears = 0;
        if (balance < targetBalance)
        {
            do
            {
                balance *= interestRate;
                ++totalYears;
            } while (balance < targetBalance);
        }
        Console.WriteLine("In {0} year{1} you'll have a balance of {2}.",
                            totalYears, totalYears == 1 ? "" : "s",
                            balance);
  这显然无谓地增加了复杂性。更好的解决方案是使用 while 循环。
🔚