[問題] 請教bool變數值的轉換方法做法

看板C_Sharp作者 (以光為名)時間11年前 (2012/10/13 18:39), 編輯推噓2(204)
留言6則, 5人參與, 最新討論串1/1
事情是這樣的,這陣子在重讀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
我是完全沒有想過用xor (羞
10/13 19:14, 1F

10/13 19:21, , 2F
x = checkBox.checked;
10/13 19:21, 2F

10/13 19:37, , 3F
checkBox.checked={Binding x,Mode=TwoWay}
10/13 19:37, 3F

10/13 19:37, , 4F
x 是 true 的時候 x 會變 false
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
x = !x;
10/13 19:53, 6F
喔喔! 對耶 這樣做也行! 程式寫多了腦子會變死ˊ_>ˋ..我用那個笨做法做了多少專案... ※ 編輯: stu87616 來自: 1.163.67.87 (10/13 19:58)
文章代碼(AID): #1GUKJl11 (C_Sharp)