这是我的代码:
public void ToggleCheckBox()
{
if (chkSelected.Checked) ? chkSelected.Checked = false : chkSelected.Checked = true;
//This works, but I want to write it using a ternary.
if (chkSelected.Checked)
{
chkSelected.Checked = false;
}
else
{
chkSelected.Checked = true;
}
}
我搞砸了什么?谢谢!
答案 0 :(得分:4)
要么这样做:
if (chkSelected.Checked) chkSelected.Checked = false; else chkSelected.Checked = true;
......或者这个:
chkSelected.Checked = chkSelected.Checked ? false : true;
或放弃支票并执行此操作:
chkSelected.Checked = !chkSelected.Checked;
答案 1 :(得分:1)
将其写为
chkSelected.Checked = !chkSelected.Checked
代替。
要重写你的确切示例,它会像这样凌乱:
chkSelected.Checked = (chkSelected.Checked) ? false : true;
在这种情况下,?:
运算符会返回true
或false
。它无法执行任务。
答案 2 :(得分:1)
您使用的是分配而非比较,并且您不需要if
。事实上,你的意图是什么不太清楚,但我猜它是:
chkSelected.Checked = !chkSelected.Checked;
答案 3 :(得分:0)
因为你必须像分配一样使用:
chkSelected.Checked =(chkSelected.Checked ? false : true);
三元运算符像分配一样使用
但是这里做这件事并不是一个好主意
chkSelected.Checked =!chkSelected.Checked;
缩短方式..
答案 4 :(得分:0)
为什么不这样做:
chkSelected.Checked = !chkSelected.Checked;
此外,它不会编译,因为你放在它前面的if
。删除它,它也会工作!
答案 5 :(得分:0)
我认为你的意思是:
chkSelected.Checked=(chkSelected.Checked ? false : true)
可以缩短为:
chkSelected.Checked=!chkSelected.Checked