前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#三元运算符?:高级点的用法

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

作者头像
望天
发布2018-08-02 11:40:52
1.6K0
发布2018-08-02 11:40:52
举报
文章被收录于专栏:along的开发之旅along的开发之旅

初级三元运算符用法:

p=bool?A:B

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

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

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

代码语言:javascript
复制
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算法              */

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

网上也有如下例子:

代码语言:javascript
复制
            Test t = new Test();
            if (t.str == "1")
                p = "11";
            else if (t.str == "2")
                p = "22";
            else if (t.str == "3")
                p = "33";

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

代码语言:javascript
复制
p = t.str == "1" ? "11":((t.str == "2") ? "22":"33");

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

代码语言:javascript
复制
 p=t.str == "1"?"11":t.str == "2"?"22":t.str == "3"?"33":"";

换行一下,就是

代码语言:javascript
复制
p = t.str == "1" ? "11" :
      t.str == "2" ? "22" : 
      t.str == "3" ? "33" : 
      "";
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年04月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档