选择语句

C#的选择语句和其他结构化编程大致一样
 简单选择语句
1 None.gif              int  i  =   0 ;
2 None.gif             if  (i  ==   10 )
3 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
4InBlock.gif                System.Console.Write("true"); 
5ExpandedBlockEnd.gif            }

6 None.gif             else
7 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
8InBlock.gif                System.Console.Write("false");
9ExpandedBlockEnd.gif            }
注意的是,在第2行的表达式中,要求的必须是逻辑表达式而不允许是赋值。

简单语句可以被转为三目运算,条件是你的if else 语句足够的简单
1 None.gif              int  i  =   0 ;
2 None.gif
3 None.gif            System.Console.WriteLine(i == 10 ? " true " : " false " );
要注意的是?:是右结合的方式,如果你的处理比较复杂,你还是不要用?:了,会让维护你代码的人恨死你的。
1 None.gif              int  i  =   0 ;
2 None.gif
3 None.gif            System.Console.WriteLine(i  ==   10   ?   " true "  : i  ==   5   ?   " false "  :  " true " );
代码是写给人看的,以上代码除了能让你迷惑之外,其余并没有什么效果,所以你以后的代码都希望能让人阅读清晰。

多条件判断。
我比较反对写以下代码
 1 None.gif              int  i  =   0 ;
 2 None.gif
 3 None.gif             if  (i  ==   10 )
 4 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 5InBlock.gif                System.Console.WriteLine("i==10");
 6ExpandedBlockEnd.gif            }

 7 None.gif             else   if  (i  <   10 )
 8 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 9InBlock.gif                System.Console.WriteLine("i<10");
10ExpandedBlockEnd.gif            }

11 None.gif             else
12 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
13InBlock.gif                System.Console.WriteLine("i>10");
14ExpandedBlockEnd.gif            }

以上的需求完全可以写为
 1 None.gif              int  i  =   0 ;
 2 None.gif
 3 None.gif
 4 None.gif             if  (i  ==   10 )
 5 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 6InBlock.gif                System.Console.WriteLine("i==10");
 7ExpandedBlockEnd.gif            }

 8 None.gif             else
 9 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
10InBlock.gif                if (i < 10)
11ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
12InBlock.gif                    System.Console.WriteLine("i<10");
13ExpandedSubBlockEnd.gif                }

14InBlock.gif                else
15ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
16InBlock.gif                    System.Console.WriteLine("i>10");
17ExpandedSubBlockEnd.gif                }

18ExpandedBlockEnd.gif            }

现在我们来看下多分支判断:switch
 1 None.gif              int  i  =   0 ;
 2 None.gif
 3 None.gif             switch  (i)
 4 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 5InBlock.gif                case 1:
 6InBlock.gif                    System.Console.Write(i);
 7InBlock.gif                    break;
 8InBlock.gif                case 2:
 9InBlock.gif                    System.Console.Write(i);
10InBlock.gif                    break;
11InBlock.gif                case 3:
12InBlock.gif                    System.Console.Write(i);
13InBlock.gif                    goto case 5;
14InBlock.gif                case 5:
15InBlock.gif                    System.Console.Write(i);
16InBlock.gif                    goto default;
17InBlock.gif                default:
18InBlock.gif                    System.Console.Write("default");
19InBlock.gif                    break;
20ExpandedBlockEnd.gif            }

注意第3行,表达式的值是标量值,不是逻辑表达式。

在这个表达式中可以使用的值是:sbyte、byte、short、ushort、int、uint、long、ulong、char、string 或枚举类型。但不要慌,其实就两类值:数字和字符串。

然后来看下第7、10、12、15和19行的break或goto。switch要求case块必须有明确的可跳出的控制语句,不可以贯穿。
但有一种情况可以列外

 1 None.gif              int  i  =   0 ;
 2 None.gif
 3 None.gif             switch  (i)
 4 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 5InBlock.gif                case 1:
 6InBlock.gif                case 2:
 7InBlock.gif                case 3:
 8InBlock.gif                    System.Console.Write(i);
 9InBlock.gif                    goto case 5;
10InBlock.gif                case 5:
11InBlock.gif                    System.Console.Write(i);
12InBlock.gif                    goto default;
13InBlock.gif                default:
14InBlock.gif                    System.Console.Write("default");
15InBlock.gif                    break;
16ExpandedBlockEnd.gif            }

 

转载于:https://www.cnblogs.com/shyleoking/archive/2007/01/31/635379.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值