C#三元运算符?:高级点的用法

初级三元运算符用法:

p=bool?A:B

当bool=true,p=表达式A,当bool=false,p=表达式B。

那么当你遇到?:?:时,不要楞,三元运算符也是可以嵌套的。

用AForge.net时,有代码如下:


var population = new Population(populationSize,
                new PermutationChromosome(citiesCount), 
                fitnessFunction,
                (selectionMethod==0)?(ISelectionMethod)new EliteSelection():
                (selectionMethod==1)?(ISelectionMethod)new RankSelection():
                (ISelectionMethod)new RouletteWheelSelection()
                );

当看到,(selectionMethod==0)?(ISelectionMethod)new EliteSelection():
                (selectionMethod==1)?(ISelectionMethod)new RankSelection():
                (ISelectionMethod)new RouletteWheelSelection()

时,直接楞了,发觉,三元运算符似乎也可以嵌套。上面代码的作用是,根据selectionMethod的取值,选择需要的算法。

            /**
             * 0:EliteSelection算法
             * 1:RankSelection算法
             * 其他:RouletteWheelSelection算法
             */

这样的话,嵌套后的理解就方便了。

网上也有如下例子:

            Test t = new Test();
            if (t.str == "1")
                p = "11";
            else if (t.str == "2")
                p = "22";
            else if (t.str == "3")
                p = "33";

那么用三元运算符嵌套就是:

p = t.str == "1" ? "11":((t.str == "2") ? "22":"33");

因为运算符的优先级限制,也可以写成如下方式:

 p=t.str == "1"?"11":t.str == "2"?"22":t.str == "3"?"33":"";

换行一下,就是

p = t.str == "1" ? "11" :
      t.str == "2" ? "22" : 
      t.str == "3" ? "33" : 
      "";






  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值