Re: [问题] ?: 运算子的问题

楼主: VVll (李奥纳多皮卡丘)   2015-01-05 17:53:21
※ 引述《apologize (人生在世很惬意)》之铭言:
: checkBox1.Checked == true ? timer1.Enabled = true : timer1.Enabled = false;
: 我是这样写,可是他说只能用陈述式表示,
: 可是不是要判别式才能用?请问要怎样修改?
MSDN ?: 运算子 (C# 参考)
http://msdn.microsoft.com/zh-tw/library/ty67wk28.aspx
语法
condition ? first_expression : second_expression;
因为expression 实际上是回传给这个语法的值
e.g
int a = (true ? 0 : 1);//合法
int b = (false ? "0" : "1");//非法,因为b是int,但expression是string
所以你的程式应该写成
timer1.Enabled = (checkBox1.Checked ? true : false);
或者
if(checkBox1.Checked)
{
timer1.Enabled = true;
}
else
{
timer1.Enabled = false;
}
若这样写也可以正常赋值,但无意义
bool tmp = checkBox1.Checked ? timer1.Enabled = true : timer1.Enabled = false;
作者: AmosYang (泛用人型编码器)   2015-01-05 18:08:00
或著直接 timer1.Enabled = checkBox1.Checked ? :D
楼主: VVll (李奥纳多皮卡丘)   2015-01-05 20:21:00
1f那样写 IDE会打枪XD
作者: GoalBased (Artificail Intelligence)   2015-01-05 20:56:00
1f那个真的不行捏,我用vs2013
作者: andymai (人生只有一次)   2015-01-05 20:56:00
@@? 打枪的理由是什么? 误会什么了???
作者: GoalBased (Artificail Intelligence)   2015-01-05 20:57:00
就编译不过阿
作者: andymai (人生只有一次)   2015-01-05 20:57:00
好奇了~我用VS2010可以~是在checkBox1的CheckedChanged事件里写 timer1.Enabled = checkBox1.Checked 问题在哪?不会是在 checkBox1.Checked 后面多打问号吧? 这就好笑囉
作者: GoalBased (Artificail Intelligence)   2015-01-05 21:00:00
哈哈,原来是误会了,还以为那个 ? 是 ?:的 ?
作者: andymai (人生只有一次)   2015-01-05 22:09:00
还真的被我猜到了...
作者: AmosYang (泛用人型编码器)   2015-01-06 10:40:00
XD我的本意是“不需要判断式,直接执行‘timer1.Enabled =checkBox1.Checked;’即可”;我原本的写法的确容易造成误会 :D

Links booklink

Contact Us: admin [ a t ] ucptt.com