[問題] 請教bool變數值的轉換方法做法
事情是這樣的,這陣子在重讀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
推
10/13 19:14, , 1F
10/13 19:14, 1F
→
10/13 19:21, , 2F
10/13 19:21, 2F
→
10/13 19:37, , 3F
10/13 19:37, 3F
推
10/13 19:37, , 4F
10/13 19:37, 4F
→
10/13 19:37, , 5F
10/13 19:37, 5F
咳,抱歉,仔細想想用checkBox當例子還挺遭的 (掩面)
我主要想問的就是 "輕易切換bool的值" 這個事件而已,
再翻翻以前的程式碼發現這個例子:
if(x)
x=false;
else
x=true;
沒錯,就是很簡單的切換= =||
我有點忘了這邊是要幹嘛(爆),總之需要一個切換的函式,
使用XOR的好處就是不必知道這個bool是什麼,總之就是換成另一個就對了,
大家沒有遇過這種狀況嗎?
※ 編輯: stu87616 來自: 1.163.67.87 (10/13 19:45)
→
10/13 19:53, , 6F
10/13 19:53, 6F
喔喔! 對耶 這樣做也行!
程式寫多了腦子會變死ˊ_>ˋ..我用那個笨做法做了多少專案...
※ 編輯: stu87616 來自: 1.163.67.87 (10/13 19:58)