[問題] 想請問sender

看板C_Sharp作者 (*微涼的你*)時間16年前 (2010/03/23 22:24), 編輯推噓2(2021)
留言23則, 5人參與, 最新討論串1/1
不好意思 因為我是C#的初學者 去買了一本視窗程設在自學 可是有一個東西我一直看不太懂 private void radioButton1_CheckedChanged(object sender, EventArgs e) { RadioButton radioButton = (RadioButton)sender; if (radioButton.Checked == false) return; ................ } 關於像這樣的函式 究竟sender是什麼呀? 可以做什麼? 尤其像那一行 RadioButton radioButton = (RadioButton)sender; 這一行書上都沒特別解說 所以我看的霧颯颯@@ 所以只好上來問各為大大 希望有人可以為我解說 謝謝~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.253.80

03/23 22:29, , 1F
sender就是被按的那個radioButton
03/23 22:29, 1F

03/23 22:29, , 2F
我們可以讓一百個按鈕共用同一個處理函式 再利用 sender
03/23 22:29, 2F

03/23 22:29, , 3F
來判斷是哪個按鈕被按下
03/23 22:29, 3F

03/23 22:34, , 4F
大概了解了~再請問sender前的(RadioButton)是不是表示
03/23 22:34, 4F

03/23 22:35, , 5F
被判斷的就是radio的按鈕 也意味著其他類型的按鈕也可
03/23 22:35, 5F

03/23 22:35, , 6F
以用括弧的方式 來判斷不同種按鈕的選擇對吧@@
03/23 22:35, 6F

03/23 22:36, , 7F
比如 應該也有(Checkbox)sender這樣的用法吧?
03/23 22:36, 7F

03/23 22:41, , 8F
沒錯
03/23 22:41, 8F

03/23 22:42, , 9F
(Checkbox)sender 的意思是....把sender轉型為Checkbox
03/23 22:42, 9F

03/23 22:43, , 10F
傳進去方法的時候,是用object這個類別,所以要轉型。
03/23 22:43, 10F

03/23 22:43, , 11F
或者說....unboxing
03/23 22:43, 11F

03/23 23:35, , 12F
OK~~了解了 謝謝你們熱心的解說^^
03/23 23:35, 12F

03/24 11:21, , 13F
我比較喜歡用as關鍵字 程式碼看起來比較漂亮@@
03/24 11:21, 13F

03/24 11:23, , 14F
不過對於非參考型別而言還是必須要用小括弧就是了
03/24 11:23, 14F

03/24 18:50, , 15F
還是推文一下好了... unboxing 是指自物件擷取 實值型別
03/24 18:50, 15F

03/24 18:52, , 16F
Checkbox 顯然不屬於實值型別 boxing/unboxing 該屬於
03/24 18:52, 16F

03/24 18:53, , 17F
效能議題 和這裡的問題沒什麼關係
03/24 18:53, 17F

03/24 18:55, , 18F
as 和 (cast) 不同 除 as 只針對參考型別間轉型外
03/24 18:55, 18F

03/24 18:58, , 19F
as 轉不過只是還你一個 null (cast)轉不過會吐個 ex 給你
03/24 18:58, 19F

03/24 19:39, , 20F
原來boxing/unboxing只限定用在實質型別上啊....
03/24 19:39, 20F

03/24 19:40, , 21F
我還以為把東西包成更底層的類型就叫做boxing....
03/24 19:40, 21F

03/24 21:12, , 22F
沒記錯的話adrianc說的ex是指InvalidCastException
03/24 21:12, 22F

03/24 21:13, , 23F
這也是as比Casting好用的地方(只以參考型別來說)
03/24 21:13, 23F
文章代碼(AID): #1BgCyYA5 (C_Sharp)