# C# if 语句和循环 - 条件逻辑教程

## 使用 if 语句做出决定

dotnet new console -n BranchesAndLoops -o .


.NET 6 SDK 还为使用以下 SDK 的项目添加了一组隐式 指令：

• Microsoft.NET.Sdk
• Microsoft.NET.Sdk.Web
• Microsoft.NET.Sdk.Worker

int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");


int b = 3;


## 让 if 和 else 完美配合

int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");


ifelse 语句下的缩进是为了方便读者阅读。 C# 语言忽略缩进或空格。 ifelse 关键字后面的语句根据条件决定是否执行。 本教程中的所有示例都遵循了常见做法，根据语句的控制流缩进代码行。

int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}


int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}


== 符号执行相等测试。 使用 == 将相等测试与赋值测试区分开来，如在 a = 5 中所见。

&& 表示“且”。 也就是说，两个条件必须都为 true，才能执行 true 分支中的语句。 这些示例还表明，可以在每个条件分支中添加多个语句，前提是将它们用 {} 括住。 还可以使用 || 表示“或”。 在当前已编写的代码之后添加以下代码：

if ((a + b + c > 10) || (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not equal to the second");
}


ExploreIf();

void ExploreIf()
{
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}

int c = 4;
if ((a + b + c > 10) && (a > b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is greater than the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not greater than the second");
}

if ((a + b + c > 10) || (a > b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is greater than the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not greater than the second");
}
}


//ExploreIf();


// 在 C# 中启动 注释。 注释是你想要保留在源代码中但不能作为代码执行的任何文本。 编译器不会从注释中生成任何可执行代码。

## 使用循环重复执行运算

int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}"); counter++; }  while 语句会检查条件，并执行 while 后面的语句或语句块。 除非条件为 false，否则它会重复检查条件并执行这些语句。 此示例新引入了另外一个运算符。 counter 变量后面的 ++ 是增量运算符。 它将 counter 值加 1，并将计算后的值存储在 counter 变量中。 重要 请确保 while 循环条件在你执行代码时更改为 false。 否则，创建的就是无限循环，即程序永不结束。 本示例中没有演示上述情况，因为你必须使用 CTRL-C 或其他方法强制退出程序。 while 循环先测试条件，然后再执行 while 后面的代码。 do ... while 循环先执行代码，然后再检查条件。 下面的代码对 do while 循环进行了演示： int counter = 0; do { Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);


do 循环和前面的 while 循环生成的输出结果相同。

## 使用 for 循环

For 循环通常用在 C# 中。 试运行以下代码：

for (int index = 0; index < 10; index++)
{
Console.WriteLine($"Hello World! The index is {index}"); }  上述代码的工作原理与已用过的 while 循环和 do 循环相同。 for 语句包含三个控制具体工作方式的部分。 第一部分是 for 初始值设定项：int index = 0; 声明 index 是循环变量，并将它的初始值设置为 0 中间部分是 for 条件：index < 10 声明只要计数器值小于 10，此 for 循环就会继续执行。 最后一部分是 for 迭代器：index++ 指定在执行 for 语句后面的代码块后，如何修改循环变量。 在此示例中，它指定 index 应在代码块每次执行时递增 1。 请自行试验。 尝试以下每种变化： • 将初始值设定项更改为其他初始值。 • 将结束条件设定项更改为其他值。 完成后，继续利用所学知识，试着自己编写一些代码。 本教程中未介绍的另一个循环语句：foreach 语句。 foreach 语句为项序列中的每一项重复其语句。 它最常用于集合，因此将在下一教程中介绍。 ## 已创建嵌套循环 whiledofor 循环可以嵌套在另一个循环内，以使用外部循环中的各项与内部循环中的各项组合来创建矩阵。 我们来生成一组字母数字对以表示行和列。 一个 for 循环可以生成行： for (int row = 1; row < 11; row++) { Console.WriteLine($"The row is {row}");
}


for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}"); }  可以将一个循环嵌套在另一个循环中以形成各个对： for (int row = 1; row < 11; row++) { for (char column = 'a'; column < 'k'; column++) { Console.WriteLine($"The cell is ({row}, {column})");
}
}


## 结合使用分支和循环

• % 运算符可用于获取除法运算的余数。
• if 语句中的条件可用于判断是否应将数字计入总和。
• for 循环有助于对 1 到 20 中的所有数字重复执行一系列步骤。