在我们学习编程之初,就已经掌握了程序的流程控制,也能够明确的知道,程序的流程控制可以分为分支结构、循环结构、顺序结构等。同样,在 C# 中也存在着许多的程序流程控制结构,下面将细细讲解及演示。
if-else
分支语句
分支语句 if-else
在编程中普遍存在、及其常见,使用方式包括 if
、if-else
、if-else-if...
多种形式。
if 结构: 当条件判断成立的时候执行程序指令,条件不满足时直接向下执行。
Code 示例如下:
int a = 5;
int b = 3;
if (a >= b)
{
a += b;
}
if- else结构: 当条件判断成立的时候执行程序指令,条件不满足时直接向下执行。
Code 示例如下:
int a = 5;
int b = 3;
if (a >= b)
{
a += b;
}
else
{
a -= b;
}
if- else-if…结构: 当条件判断成立的时候执行程序指令,条件不满足时直接向下执行。
Code 示例如下:
int a = 5;
int b = 3;
if (a > b)
{
a += b;
}
else if (b >= a)
{
b -= a;
}
switch
分支语句
switch
可以实现多分支语句的实现。
Code 示例如下:
string readStr = Console.ReadLine();
switch (readStr)
{
case "1":
readStr = "您的输入:一";
break;
case "2":
readStr = "您的输入:二";
break;
case "3":
readStr = "您的输入:三";
break;
default:
readStr = $"您的输入:{readStr}";
break;
}
C# 提供了一个语法糖1,switch
还可以优化为以下形式:
string readStr = Console.ReadLine();
readStr = readStr switch
{
"1" => "您的输入:一",
"2" => "您的输入:二",
"3" => "您的输入:三",
_ => $"您的输入:{readStr}",
};
分支语句之三目运算符 ? :
这种运算符称为三目运算符。Code 演示如下:
int a = 5;
int b = 3;
int c;
// 即 求出 a 和 b 之间的最大值,
c = a >= b ? a : b;
迭代语句 while
迭代语句 又称为循环语句, while
循环也可以称为当型循环,也就是说当条件满足的情况下继续执行循环体,当条件不满足的情况下将结束循环体。
Code 示例如下:
int i = 5;
while (i >= 0)
{
Console.WriteLine(i--);
}
迭代语句 do-while
do-while
循环也可以称为直到型循环,也就是说先执行循环体,而后判断条件是否满足,当条件满足的情况下继续执行循环体,当条件不满足的情况下将结束循环体。
Code 示例如下:
int i = 5;
do
{
Console.WriteLine(i--);
} while (i >= 0);
迭代语句 for
for
循环。以下案例为打印出九九乘法表,由案例可看出可以循环嵌套,并且索引号也被使用。
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write($"{j}×{i}={j*i}\t");
}
Console.WriteLine();
}
迭代语句 foreach
当对某一个对象进行遍历的时候,如果只关注遍历的项,而不关注每一项的索引,那么可以选择 foreach
循环,但是具体的时候还是根据个人的使用习惯即编码风格来,也并不是具有一定之规,原则是尽可能从优。
List<string> names = new List<string>()
{
"张三","李四","王二","小红","小明"
};
foreach (var name in names)
{
Console.WriteLine(name);
}
跳转语句
跳转语句之 break
通常 break
在循环体及 switch
中配合使用,旨在结束当前循环或 switch
的作用。
int i = 5;
while (i >= 0)
{
Console.WriteLine(i--);
if (i == 2) break; // 打印出5、4、3后就退出循环
}
跳转语句之 continue
continue
通常配合循环体来进行使用,旨在结束当前循环,但不退出循环体,进入下一次的循环。
int i = 5;
while (i >= 0)
{
i--;
if (i == 2) continue;
Console.WriteLine(i); // 不会打印出 2
}
跳转语句之 return
return
表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由 return
后面的参数指定。 return
通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
class Program
{
static void Main(string[] args)
{
Funcs();
Console.ReadLine();
}
private static void Funcs()
{
Console.WriteLine("第一条打印数据");
return;// 在当前方法中,return 以下的代码将不被执行。
Console.WriteLine("第二条打印数据");
}
}
跳转语句之 goto
说起 goto
语句其实是挺尴尬的,不管是教程还是文档,多少都会介绍以下 goto
语句,但却很多都会带上一句:尽量少用 ,所以至今我都没有用过,同时在工作中也没有见到谁用过。总之,用的结果就是让程序结构变得混乱,那么这里我就不在进行总结了,具体的话可以参照微软官方文档:goto 。
语法糖:就相当于汉语里的成语。即,用更简练的言语表达较复杂的含义。在得到广泛接受的情况之下,可以提升交流的效率。 ↩︎