C#的选择语句和其他结构化编程大致一样
简单选择语句
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行的表达式中,要求的必须是逻辑表达式而不允许是赋值。
简单语句可以被转为三目运算,条件是你的if else 语句足够的简单
1 int i = 0 ; 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 " ); 代码是写给人看的,以上代码除了能让你迷惑之外,其余并没有什么效果,所以你以后的代码都希望能让人阅读清晰。
多条件判断。
我比较反对写以下代码
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 } 以上的需求完全可以写为
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 else15 { 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 } 注意第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 } 本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806921