C#的选择语句和其他结构化编程大致一样
简单选择语句
简单语句可以被转为三目运算,条件是你的if else 语句足够的简单
多条件判断。
我比较反对写以下代码
以上的需求完全可以写为
现在我们来看下多分支判断:switch
简单选择语句
1 int i = 0;
2 if (i == 10)
3 {
4 System.Console.Write("true");
5 }
6 else
7 {
8 System.Console.Write("false");
9 }
注意的是,在第2行的表达式中,要求的必须是逻辑表达式而不允许是赋值。2 if (i == 10)
3 {
4 System.Console.Write("true");
5 }
6 else
7 {
8 System.Console.Write("false");
9 }
简单语句可以被转为三目运算,条件是你的if else 语句足够的简单
1 int i = 0;
2
3 System.Console.WriteLine(i==10?"true":"false");
要注意的是?:是右结合的方式,如果你的处理比较复杂,你还是不要用?:了,会让维护你代码的人恨死你的。2
3 System.Console.WriteLine(i==10?"true":"false");
1 int i = 0;
2
3 System.Console.WriteLine(i == 10 ? "true" : i == 5 ? "false" : "true");
代码是写给人看的,以上代码除了能让你迷惑之外,其余并没有什么效果,所以你以后的代码都希望能让人阅读清晰。2
3 System.Console.WriteLine(i == 10 ? "true" : i == 5 ? "false" : "true");
多条件判断。
我比较反对写以下代码
1 int i = 0;
2
3 if (i == 10)
4 {
5 System.Console.WriteLine("i==10");
6 }
7 else if (i < 10)
8 {
9 System.Console.WriteLine("i<10");
10 }
11 else
12 {
13 System.Console.WriteLine("i>10");
14 }
2
3 if (i == 10)
4 {
5 System.Console.WriteLine("i==10");
6 }
7 else if (i < 10)
8 {
9 System.Console.WriteLine("i<10");
10 }
11 else
12 {
13 System.Console.WriteLine("i>10");
14 }
以上的需求完全可以写为
1 int i = 0;
2
3
4 if (i == 10)
5 {
6 System.Console.WriteLine("i==10");
7 }
8 else
9 {
10 if (i < 10)
11 {
12 System.Console.WriteLine("i<10");
13 }
14 else
15 {
16 System.Console.WriteLine("i>10");
17 }
18 }
2
3
4 if (i == 10)
5 {
6 System.Console.WriteLine("i==10");
7 }
8 else
9 {
10 if (i < 10)
11 {
12 System.Console.WriteLine("i<10");
13 }
14 else
15 {
16 System.Console.WriteLine("i>10");
17 }
18 }
现在我们来看下多分支判断:switch
1 int i = 0;
2
3 switch (i)
4 {
5 case 1:
6 System.Console.Write(i);
7 break;
8 case 2:
9 System.Console.Write(i);
10 break;
11 case 3:
12 System.Console.Write(i);
13 goto case 5;
14 case 5:
15 System.Console.Write(i);
16 goto default;
17 default:
18 System.Console.Write("default");
19 break;
20 }
2
3 switch (i)
4 {
5 case 1:
6 System.Console.Write(i);
7 break;
8 case 2:
9 System.Console.Write(i);
10 break;
11 case 3:
12 System.Console.Write(i);
13 goto case 5;
14 case 5:
15 System.Console.Write(i);
16 goto default;
17 default:
18 System.Console.Write("default");
19 break;
20 }
注意第3行,表达式的值是标量值,不是逻辑表达式。
在这个表达式中可以使用的值是:sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型。但不要慌,其实就两类值:数字和字符串。
然后来看下第7、10、12、15和19行的break或goto。switch要求case块必须有明确的可跳出的控制语句,不可以贯穿。
但有一种情况可以列外
1 int i = 0;
2
3 switch (i)
4 {
5 case 1:
6 case 2:
7 case 3:
8 System.Console.Write(i);
9 goto case 5;
10 case 5:
11 System.Console.Write(i);
12 goto default;
13 default:
14 System.Console.Write("default");
15 break;
16 }
2
3 switch (i)
4 {
5 case 1:
6 case 2:
7 case 3:
8 System.Console.Write(i);
9 goto case 5;
10 case 5:
11 System.Console.Write(i);
12 goto default;
13 default:
14 System.Console.Write("default");
15 break;
16 }