作者stu87616 (以光为名)
看板C_Sharp
标题[问题] 请教bool变数值的转换方法做法
时间Sat Oct 13 18:39:37 2012
事情是这样的,这阵子在重读C语言的资料结构,
想把基础打深一点,不要看到麻烦一点的实作法就头昏眼花。
我发现到C#支援XOR运算子 ^ ,
我个人认为这是一个很好用的运算子!
之前在做一小专案的时候,经常会根据某些条件需要切换一个bool的值,
(好比说一个checkBox的checked与另外一个bool连动)
以前我的写法都是这样:
bool x = false;
void checkBox_CheckedChanged(object sender, EventArgs e)
{
if(checkBox.checked)
x=true;
else
x=false;
}
都会过一个if-else的判定,但其实我个人一直觉得这种做法很没效率...(私心啦)
有这个 ^ 的运算子,就可以把code精简成这样:
bool x = false;
void checkBox_CheckedChanged(object sender, EventArgs e)
x = x ^ true;
这麽一来同样可以达到我要的效果,而且不必过麻烦的if-else判定式,
不过我也觉得很疑惑,这种作法我相信我绝对不是第一个想到的,
为什麽从网路上找到的code都没有看过有人用过?
是不是 ^ 运算子有什麽特殊的缺点而乏人问津?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.163.67.87
1F:推 Ansaga:我是完全没有想过用xor (羞 10/13 19:14
2F:→ tonyhsie:x = checkBox.checked; 10/13 19:21
3F:→ mortleo:checkBox.checked={Binding x,Mode=TwoWay} 10/13 19:37
4F:推 largesperm:x 是 true 的时候 x 会变 false 10/13 19:37
5F:→ largesperm:这不是很怪吗 @@ 10/13 19:37
咳,抱歉,仔细想想用checkBox当例子还挺遭的 (掩面)
我主要想问的就是 "轻易切换bool的值" 这个事件而已,
再翻翻以前的程式码发现这个例子:
if(x)
x=false;
else
x=true;
没错,就是很简单的切换= =||
我有点忘了这边是要干嘛(爆),总之需要一个切换的函式,
使用XOR的好处就是不必知道这个bool是什麽,总之就是换成另一个就对了,
大家没有遇过这种状况吗?
※ 编辑: stu87616 来自: 1.163.67.87 (10/13 19:45)
6F:→ wvsrugby:x = !x; 10/13 19:53
喔喔! 对耶 这样做也行!
程式写多了脑子会变死ˊ_>ˋ..我用那个笨做法做了多少专案...
※ 编辑: stu87616 来自: 1.163.67.87 (10/13 19:58)