C#判断结构
判断结构是根据一个或多个要评估或测试的条件,以及条件为真时要执行的语句和条件为假时要执行的语句
一般来说执行的流程如下:
C#中提供的判断语句有如下
- if语句
由一个布尔表达式后跟一个或多个语句组成
语法:
if(boolean_expr)
{
//此处为布尔表达式为真的时候要执行的语句
}
当boolean_expr为true的时候,if语句内的代码块会被执行,如果为false则,跳过if语句内的代码块执行后面的语句
visual studio中新建一个项目
文件-新建-项目
选择windows桌面-控制台应用程序
录入项目名称,点击确定
在Main方法中加入如下代码验证if语句
int a = 1;
if (a < 2)
{
/*如果if后的条件为真则执行下面代码语句*/
Console.WriteLine("a小于2");
}
Console.WriteLine("a的值是:{0}", a);
Console.ReadLine();
编译执行代码结果为如:
- if...else语句
一个if语句后面跟一个可选的else语句,else语句在布尔表达式为假时执行。
语法:
if(boolean_expr)
{
//如果布尔表达式为真会执行下面语句
}
else
{
//如果布尔表达式为假时会执行下面语句
}
在Main方法中加入如下代码:
Console.WriteLine("-------------if...else语句-------------");
if (a > 2)
{
Console.WriteLine("a大于2");
}
else
{
Console.WriteLine("a小于2");
}
Console.WriteLine("a的值是:{0}", a);
编译执行结果如下
if...else if...else语句
一个if语句后可以跟一个可选的else if..else语句。这可以用来测试多种条件。
当使用if...else if...else语句时,有如下几点需要注意:
- 一个if后可以跟0个或1个else,它必须在任何一个else if之后
- 一个if后可以跟0个或多个else if,它必须在else之前
- 从前至后,一旦某个else if匹配成功,其他的else if或else就不会再去做测试
语法:
if(boolean_expr 1)
{
//当布尔表达式1为真的时候执行
}
else if(boolean_expr 2)
{
//当布尔表达式为2时执行
}
else if(boolean_expr 3)
{
//当布尔表达式为3时执行
}
else
{
//当前面的所有布尔表达式都不成立时执行
}
在Main中加入如下代码:
Console.WriteLine("-------------if else if eles if... else语句-------------");
a = 50;
if (a == 10)
{
Console.WriteLine("a的值是10");
}
else if (a == 20)
{
Console.WriteLine("a的值是20");
}
else
{
Console.WriteLine("没有匹配的值!");
}
Console.WriteLine("a的准确值是:{0}",a);
编译运行的结果如下:
嵌套if语句
可以在一个if或else if内部再使用另一个if或else if语句
语法
if(boolean_expr1)
{
//当表达式1为真的时候执行
if(boolean_expr2)
{
//当表达式2为真的时候执行
}
}
在Main方法中加入如下代码:
Console.WriteLine("----------if嵌套-----------");
int b = 100;
int c = 200;
if (b == 100)
{
//条件满足则嵌套执行下面的判断
if (c == 200)
{
Console.WriteLine("b的值是100,c的值是200");
}
}
Console.WriteLine("b的值是:{0}",b)
Console.WriteLine("c的值是:{0}", c);
编译执行结果如下:
switch语句
一个switch语句允许测试一个变量等于多个值时的情况。每个值称为一个case,并且被测试的变量会对每个switch case进行检查。
语法
switch(expr)
{
case constant_expr1:
statement(s);
break;
case constant_expr2:
statement(s);
break;
//default为可选语句,在所有的case不满足时执行
default:
statement(s);
break;
}
使用switch语句的规规
- switch语句后的expr必须是一个整型或枚举类型,或者是一个class类型,并且这个class类型必须有一个转换函数可以把它转为整型或枚举
- 在switch中可以有多个case,每一个case后跟一个比较值和一个冒号
- case后的constant_expr必须与switch中变量有相同的数据类型,并且必须是一个常量
- 当被测试的变量等于case中常量时,case后跟的语句会被执行,直到遇到break语句
- 当遇到break语句时,switch终止,控制流会跳到switch语句后的下一行执行
- 不是每一个case都必须要有break语句,比如当case语句为空,则可以不包含break语句,控制流会继续后面的case直到遇到break为止
- C#不允许从一个开关部分继续执行到 下一个开关部分,如果case语句中有处理语句必须有break语句或者其它的跳转语句
- 一个switch可以有可选的default语句,它表示所有的case都不为真时执行,并且default中的break语句不是必须的
- C#不支持从一个case标签贯穿到另一个case标签。如果要贯穿则需要使用goto语句
在Main方法中添加如下代码
Console.WriteLine("-------------switch语句--------------");
char grade = 'E';
switch (grade)
{
case 'A':
Console.WriteLine("您的结果是A,优秀!");
break;
case 'B':
Console.WriteLine("您的结果是B,良好!");
break;
case 'C':
Console.WriteLine("您的结果是C,一般!");
break;
case 'D':
Console.WriteLine("您的结果是D,不合格!");
break;
default:
Console.WriteLine("未查询到测评结果!请重新测评!");
break;
}
编译运行后结果如下:
嵌套switch
可以把一个switch作为一个外部switch,再在其内部使用一个switch语句。
语法哪下:
switch(ch1)
{
caes ‘A’:
Console.WriteLine(“这个A是外部switch的一部分”);
switch(ch2)
{
case ‘A’:
Console.WriteLine(“这个A是内部switch的一部分”);
break;
case ‘B’:
/*内部B case 代码*/
}
break;
case ‘B’:
/*外部B case 代码*/
}
三目运算符:?:
语法:
expr1?expr2:expr3;
其中表达式的值是由expr1的值来确定的,如果expr1的值是真,则计算expr2的值,如果为假则计算expr3的值作为整个表达式的值
在Main方法中加入如下代码:
Console.WriteLine("--------------?:运算符--------------");
int x = 1, y = 2, max;
//使用三目运算符来取两个整数中的最大值
max = x > y ? x : y;
Console.WriteLine("x={0},y={1},两者中最大值是:{2}", x, y, max);
编译执行后的结果是: