作者andy910389 (*微涼的你*)
看板C_Sharp
標題[問題] 想請問sender
時間Tue Mar 23 22:24:32 2010
不好意思 因為我是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
1F:→ james732:sender就是被按的那個radioButton 03/23 22:29
2F:→ james732:我們可以讓一百個按鈕共用同一個處理函式 再利用 sender 03/23 22:29
3F:→ james732:來判斷是哪個按鈕被按下 03/23 22:29
4F:→ andy910389:大概了解了~再請問sender前的(RadioButton)是不是表示 03/23 22:34
5F:→ andy910389:被判斷的就是radio的按鈕 也意味著其他類型的按鈕也可 03/23 22:35
6F:→ andy910389:以用括弧的方式 來判斷不同種按鈕的選擇對吧@@ 03/23 22:35
7F:→ andy910389:比如 應該也有(Checkbox)sender這樣的用法吧? 03/23 22:36
8F:推 F23ko:沒錯 03/23 22:41
9F:→ F23ko:(Checkbox)sender 的意思是....把sender轉型為Checkbox 03/23 22:42
10F:→ F23ko:傳進去方法的時候,是用object這個類別,所以要轉型。 03/23 22:43
11F:→ F23ko:或者說....unboxing 03/23 22:43
12F:→ andy910389:OK~~了解了 謝謝你們熱心的解說^^ 03/23 23:35
13F:→ remmurds:我比較喜歡用as關鍵字 程式碼看起來比較漂亮@@ 03/24 11:21
14F:→ remmurds:不過對於非參考型別而言還是必須要用小括弧就是了 03/24 11:23
15F:→ adrianc:還是推文一下好了... unboxing 是指自物件擷取 實值型別 03/24 18:50
16F:→ adrianc:Checkbox 顯然不屬於實值型別 boxing/unboxing 該屬於 03/24 18:52
17F:→ adrianc:效能議題 和這裡的問題沒什麼關係 03/24 18:53
18F:→ adrianc:as 和 (cast) 不同 除 as 只針對參考型別間轉型外 03/24 18:55
19F:→ adrianc:as 轉不過只是還你一個 null (cast)轉不過會吐個 ex 給你 03/24 18:58
20F:推 F23ko:原來boxing/unboxing只限定用在實質型別上啊.... 03/24 19:39
21F:→ F23ko:我還以為把東西包成更底層的類型就叫做boxing.... 03/24 19:40
22F:→ remmurds:沒記錯的話adrianc說的ex是指InvalidCastException 03/24 21:12
23F:→ remmurds:這也是as比Casting好用的地方(只以參考型別來說) 03/24 21:13