一、IF_ELSE语句
C# 的 if 语句有 3 种
第一种
if (条件)
{
满足条件时执行的语句;
}
第二种
if (条件)
{
满足条件时执行的语句;
}
else
{
不满足条件时执行的语句;
}
第三种
if (条件)
{
满足条件时执行的语句;
}
else if (条件2)
{
满足条件2时执行的语句;
}
else if (条件3)
{
满足条件3时执行的语句;
}
else
{
不满足以上任何条件时执行的语句;
}
和 VB 不同,这里 else if 的 else 和 if 是分开的(不可写成两行),而 VB 中是 elseif。
else if 个数 >= 0。
条件应该是个 bool 类型
- if (condition == true) 应该简写成 if (condition),没有必要将 bool 值表达式和一个 bool 值比较后再返回 bool 值。
- if (n = 3) 这类错误会被发现,为方便叙述,假设 n 为 int 类型,因为 n 被赋予值 3,但 C# 中 int 类型不能隐式转化成 bool 类型。
二、SWITCH语句
switch 结构:
switch (condition)
{
case 常量表达式1:
condition == 常量表达式1 时执行的语句;
break;
case 常量表达式2:
condition == 常量表达式2 时执行的语句;
break;
default:
不满足上述条件时执行的语句;
break;
}
case 个数 >= 0。
任何两个 case 语句的常量表达式都不能具有相同的值,注意是值不能相同。
case 和 default 的 break 必不可少,这不同于 C++。
default 可以省略,但为了可读性以及可维护性,建议写上,即使它什么也不做。
condition 允许的数据类型为:sbyte、byte、short、ushort、uint、long、ulong、char、string 或者枚举类型。
注意:
1、如果一个case语句为空,就可以从这个case跳到下一个case上,这样就可以用相同的方式处理两个或多个case语句了
2、case语句的排放顺序是无关紧要的,甚至可以把default放在最前面
3、在C#中,可以把字符串用作测试变量
三、条件运算符
?: 条件实际应该称作条件运算符,属于运算符一类,由于它具有判断特性,所以这里和条件语句归为一类讲解,其语法是:
它的意思是当 condition 为 true 时,返回 first_expression,否则返回 second_expression。
有些参考书上说 ?: 等价于如下语句:
{
first_expression;
}
else
{
second_expression;
}
实际不是的,因为上述 if 语句中两个表达式都没有返回值。
int n = (1>3) ? 1 : 3;
虽然上述示例有点无聊,因为 1 肯定不会大于 3,但它是一个完整正确的 ?: 示例。
另外,上述括号可以不要,只是为了更便于阅读,以及为了减少更改条件时造成的错误,这里加了括号。
int n = (m*2 > 5) ? m : 5;
n 是多少呢?3 还是 6,应该是 3,可以看出虽然 m 在条件中被乘以 2,但并没有赋值给 m,也就是说 m 的值并未得到改变。int n = ((m=m*2) > 5) ? m : 5; 这样就是 6 了。
条件运算符为右联运算符
等价于
而不是
而其运算顺序是从左到右,所以下述示例的结果是 2,而不是 3。
int n = (m=m*2)>7 ? 1 : m>5 ? 2 : 3;