C# 语言中 :和?有什么作用?

[复制链接]
查看11 | 回复4 | 2010-4-21 23:06:18 | 显示全部楼层 |阅读模式
int i = 1;int j;j = i==1 ? 2 : 3;//如果i等于1 就返还2给j,否则返还3相当于if(i==1){j=2;}elsej=3;所以你的代码中!IsSurtaxe ? tariff.IdxtrfType : tariff.Surtaxe.IdxtrfType就相当于if(!IsSurtaxe){return tariff.IdxtrfType;}elsereturn tariff.Surtaxe.IdxtrfType这里return就相当于返还到switch的()中,也就是switch(tariff.IdxtrfType)或者switch(tariff.Surtaxe.IdxtrfType)
回复

使用道具 举报

千问 | 2010-4-21 23:06:18 | 显示全部楼层
?:是一个三目运算符意思就是如果?前面的条件表达式为真值就执行?和:之间的语句,如果为假值就执行:之后的语句例如:int i=1==1?1:2;//i的值是1int j=1!=1?1:2;//j的值是2
回复

使用道具 举报

千问 | 2010-4-21 23:06:18 | 显示全部楼层
楼主可以理解成这个样子object val = !IsSurtaxe?tariff.IdxtrfType:tariff.Surtaxe.IdxtrfType或者object val;if(!IsSurtaxe)
val=tariff.IdxtrfType;else
val=tariff.Surtaxe.IdxtrfType;然后在对变量val进行Switch(val){...}他只是简略了一下代码而已。
回复

使用道具 举报

千问 | 2010-4-21 23:06:18 | 显示全部楼层
选择句。string temp = "5"; temp=temp=="5"?"temp is 5":"temp is not 5";结果temp == "temp is 5"。你的问题中,IsSurtaxe是一个Bool类型的,也就是如果!IsSurtaxe为true,则选择tariff.IdxtrfType;为false则选后面那个
回复

使用道具 举报

千问 | 2010-4-21 23:06:18 | 显示全部楼层
(?:)是一个整体来用的,作用是是简化代码,代替If{}else{}这样的语句。例如:string 某先生=(性别=='男')?'男':'女';这句代码直接起到条件判断if{}else的作用,并且只在一句语句中实现。3目运算符,比如int a;if (int i==1){
a=2}else{ a=3}改成:?就是a=i==1?2:3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行