教程:C#
本教程介绍如何编写 C# 代码来检查变量并基于这些变量更改执行路径。 编写 C# 代码并查看编译和运行它的结果。 本教程包含一系列课程,用于探索 C# 中的分支和循环构造。 这些课程介绍了 C# 语言的基础知识。
在本教程中,你将:
- 使用 C# 开发环境启动 GitHub Codespace。
- 浏览
if和else语句。 - 使用循环重复操作。
- 使用嵌套循环。
- 合并分支和循环。
先决条件
必须具有以下选项之一:
- 使用 GitHub Codespaces 需要一个 GitHub 帐户。 如果还没有帐户,可以在 GitHub.com 创建免费帐户。
- 安装了以下工具的计算机:
使用 if 语句
若要使用教程环境启动 GitHub Codespace,请打开 教程 codespace 存储库的浏览器窗口。 选择绿色 “代码 ”按钮和 “代码空间 ”选项卡。然后选择该 + 符号以使用此环境创建新的 Codespace。 如果已完成本系列中的其他教程,则可以打开该代码空间,而不是创建新的代码空间。
加载 codespace 时,请在名为 branches-loops.cs 的教程文件夹中创建新文件。
打开新文件。
将以下代码键入或复制到 branches-loops.cs:
int a = 5; int b = 6; if (a + b > 10) Console.WriteLine("The answer is greater than 10.");通过在集成终端中键入以下命令来尝试此代码:
cd tutorials dotnet branches-loops.cs您应该看到消息“答案是大于 10。”打印到您的控制台上。
修改其声明
b,使总和小于 10:int b = 3;在终端窗口中再次键入
dotnet branches-loops.cs。由于答案小于 10,因此不会打印任何内容。 您正在测试的条件为假。 没有要执行的任何代码,因为你只为
if语句编写了一个可能的分支:true 分支。
小窍门
在浏览 C# (或任何编程语言)时,编写代码时可能会出错。 编译器查找并报告错误。 仔细查看错误输出和生成错误的代码。 你还可以要求科皮洛特找出差异或发现任何错误。 编译器错误通常可以帮助你找到问题。
第一个示例展示了 if 和布尔类型的强大功能。
布尔值是一个变量,可以是两个值之一:true或false。 C# 定义布尔变量的特殊类型 bool 。 该 if 语句检查 bool 的值。 如果值为值 true,则执行后面的 if 语句。 否则,跳过这些语句。 基于这些条件检查条件和执行语句的过程非常强大。 让我们来了解一下。
使 if 和 else 协同工作
若要在 true 和 false 分支中执行不同的代码,请创建一个 else 在条件为 false 时执行的分支。 请尝试分支 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");关键字后面的
else语句仅在测试false条件时执行。 将if和else与布尔条件结合起来,可提供处理true和false条件所需的所有功能。重要
if和else语句下的缩进是为了方便读者阅读。 C# 语言不会将缩进或空格视为重要。 根据条件,执行跟在if或else关键字之后的语句。 本教程中的所有示例都遵循了常见做法,根据语句的控制流缩进代码行。由于缩进并不重要,因此你需要使用
{并}指示何时需要多个语句成为有条件执行的块的一部分。 C# 程序员通常在所有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"); }小窍门
在本教程的其余部分,代码示例均包括使用大括号,以便遵循公认的编程规范。
可以测试更复杂的条件。 在到目前为止编写的代码后面添加以下代码:
int a = 5; int b = 3; 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中所见。&&代表 "and"。 这意味着必须同时满足这两个条件,才能在 true 分支中执行该语句。 这些示例还显示,在每个条件分支中可以有多个语句,前提是将语句括在{一起。}可以使用
||来表示“或”。 在到目前为止编写的代码后面添加以下代码:if ((a + b + c > 10) || (a == b))修改
a、b和c的值,并在&&和||之间切换以进行探索。 你对&&和||操作符的工作原理有了更深入的了解。你完成了第一步。 在下一部分开始之前,让我们将当前代码移到单独的方法中。 这样,开始使用新示例就更容易了。 将现有代码放入名为
ExploreIf()的方法中。 从程序顶部调用它。 完成这些更改后,代码应如下所示: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()。 在此部分工作时,这会使输出变得不那么混乱。//ExploreIf();
在 // C# 中启动 注释 。 注释是在源代码中需要保留但不执行为代码的任何文本。 编译器不会从注释生成任何可执行代码。
使用循环重复操作
创建大型程序的另一个重要概念是 循环。 使用循环重复想要多次执行的语句。
在调用以下
ExploreIf代码后添加此代码:int counter = 0; while (counter < 10) { Console.WriteLine($"Hello World! The counter is {counter}"); counter++; }该
while语句检查条件并执行以下while语句。 它重复检查条件并执行这些语句,直到条件为假。在这个示例中有一个新的运算符。
++变量counter的后面是递增运算符。 它将counter的值加 1 并将该值存储在counter变量中。重要
在执行代码时,请确保
while循环条件更改为 false。 否则,将创建一个 无限循环 ,程序永不结束。 此示例中未演示该行为,因为必须使用 CTRL-C 或其他方法强制程序退出。循环会在
while前先测试条件,然后再执行后续while代码。...
dowhile循环首先执行代码,然后检查条件。 以下代码中显示了do while循环:int counter = 0; do { Console.WriteLine($"Hello World! The counter is {counter}"); counter++; } while (counter < 10);此
do循环和前面的while循环生成相同的输出。
接下来,将继续介绍最后一个循环语句。
使用 for 循环
在 C# 代码中看到的另一个常见循环语句是 for 循环。
请尝试以下代码:
for (int counter = 0; counter < 10; counter++) { Console.WriteLine($"Hello World! The counter is {counter}"); }前面的
for循环执行与您已使用的while循环和do循环相同的工作。 该for语句包含三个部分,用于控制其工作原理:- 第一部分是 初始值设定项:
int counter = 0;声明为counter循环变量,并将其初始值设置为0。 - 中间部分是条件:
counter < 10声明只要该值for小于 10,此counter循环将继续执行。 - 最后一部分是 for迭代器:
counter++指定在执行for语句后的块之后如何修改循环变量。 在此示例中,它指定counter在代码块每次执行时递增 1。
- 第一部分是 初始值设定项:
亲自尝试这些条件。 请尝试以下每一项更改:
- 更改初始化器以从其他值开始。
- 更改条件以在不同的值处终止。
完成后,请转到下一部分自行编写一些代码,并使用所学内容。
本教程中有一种循环语句未被介绍:foreach 语句。 该 foreach 语句对一系列项中的每个项重复其语句。 你最常将其与 集合一起使用。 下一教程介绍了相关内容。
已创建嵌套循环
可以通过将外部循环中的每个项与内部循环中的每个项组合在一起,将另一个循环中的一个while或dofor循环嵌套到另一个循环内,以创建矩阵。 让我们生成一组字母数字对来表示行和列。
添加以下生成行的
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})"); } }对于内部循环的每个完整运行,外部循环递增一次。 反转行和列嵌套,自行查看变化。 完成后,将本节中的代码置于名为
ExploreLoops()的方法中。
结合使用分支和循环
现在,你使用了 if C# 语言中的语句和循环构造,看看是否可以编写 C# 代码来查找 1 到 20 个整数的总和,这些整数被 3 分割。 下面是一些提示:
- 运算符
%提供除法运算的其余部分。 - 该
if语句提供条件来查看数字是否应是总和的一部分。 - 该
for循环可帮助对所有数字 1 到 20 重复一系列步骤。
自己尝试。 然后检查你的表现如何。 作为提示,你应该得到 63 作为答案。
你想到这样的东西吗?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
已完成“分支和循环”教程。 若要详细了解这些概念,请参阅下列文章:
清理资源
GitHub 会在 30 天不活动后自动删除 Codespace。 如果打算探索本系列中的更多教程,您可以保留 Codespace 配置。 如果已准备好访问 .NET 站点 来下载 .NET SDK,则可以删除 Codespace。 若要删除 Codespace,请打开浏览器窗口并导航到 Codespaces。 应该会在窗口中看到代码空间的列表。 在学习教程代码空间的条目中选择三个点(...),然后选择 “删除”。