条件运算符,编译报错

项目中应用条件运算符?报错:只有 assignment、call、increment、decrement、await 和 new 对象表达式可用作语。
写了个最简单的测试代码,问题依旧:

 int i = 0;
string str = "";
 i == 0 ? str = "true" : str = "false";

编译照样报错:只有 assignment、call、increment、decrement、await 和 new 对象表达式可用作语。
查看MSDN也不明白,请老师们指点下迷津,谢啦!

4个回答

str = (i == 0 ? "true" : "false");

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复cqtrq: 你没有理解什么是表达式(expression),什么是语句(clause)
大约 5 年之前 回复
cqtrq
cqtrq 回复caozhy: 给字符串赋值不行?
大约 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复cqtrq: 如果我的回答帮助了您,请您受累点下我回答右边的采纳,谢谢
大约 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 什么语言,C#中str = "true"不能作为表达式,C++可以
大约 5 年之前 回复
cqtrq
cqtrq 你这个是正确的,但我还是不知道我错在哪?看MSDN的定义condition ? first_expression : second_expression;我的语句好像也没错呀
大约 5 年之前 回复

我的实际代码是这样的(处理RadioButton选项):

 cl.ChildNodes[1].ChildNodes[2].InnerText.ToLower() == "true" ? radioButtonR1_YES.Checked = true : radioButtonR1_NO.Checked = true;

不太好按照caozhy的方式改造...是不是我这样的思路不对?

cqtrq
cqtrq 回复caozhy: 还是老老实实的用if-else了
大约 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 你这个只能用if else
大约 5 年之前 回复
 如果你无聊非要用,可以这么写
CheckBox ch = cl.ChildNodes[1].ChildNodes[2].InnerText.ToLower() == "true" ? radioButtonR1_YES.: radioButtonR1_NO;
ch.Checked = true;
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复cqtrq: 如果我的回答帮助了您,请您受累点下我回答右边的采纳,谢谢
大约 5 年之前 回复
cqtrq
cqtrq 绝非无聊!只是追求代码简洁而已。好像明白问题在哪了,条件运算符的目的在于视情况不同的返回值,而我的方式根本没有利用条件运算符的返回值,因此也也就失去了条件运算符的意义。谢谢caozhy的启发!
大约 5 年之前 回复

注意只能跟表达式radioButtonR1_YES.Checked = true语句,不是表达式

cqtrq
cqtrq 你指出我的问题了,真是把表达式等同于语句了,多谢指点!
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐