C# 之事件及event关键字存在的意义
生活随笔
收集整理的這篇文章主要介紹了
C# 之事件及event关键字存在的意义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
總結:event關鍵字的作用,用于不公開發布器中委托對象實例,對事件委托對象進行保護,禁止外部調用。
1、C#事件舉例說明
1 //事件及event關鍵字存在的意義
2 class Program
3 {
4 //事件,發布(publisher)-訂閱(subscriber)模型
5 static void Main(string[] args)
6 {
7 MouseLeftButton e = new MouseLeftButton(); /* 實例化對象,第一次沒有觸發事件 */
8 subscribEvent v = new subscribEvent(); /* 實例化對象 */
9 e.clickHandler += v.clickChromeBrowserIcon; /* 注冊 訂閱雙擊點擊瀏覽器圖標 */
10 //e.OnDoubleClick();
11 //e.clickHandler -= v.clickChromeBrowserIcon;
12 e.OnDoubleClick();
13 e.clickHandler += v.clickWeChatIcon;
14 Console.WriteLine("我手速比較快,同時點擊了瀏覽器標簽和微信標簽");
15 e.OnDoubleClick();
16
17 }
18 }
19
20
21 //事件訂閱器類,提供事件處理程序的對象,就是事件發生了要做什么事情。
22 public class subscribEvent
23 {
24 //點擊谷歌瀏覽器圖標
25 public void clickChromeBrowserIcon()
26 {
27 Console.WriteLine("瀏覽器打開,我輸入了博客園網址打開了博客園網站首頁!");
28 }
29
30 //點擊桌面微信圖標
31 public void clickWeChatIcon()
32 {
33 Console.WriteLine("微信客戶端打開,我登錄了我的微信!");
34 }
35 }
36
37 //事件發布器類,用于發布事件,包含事件和委托定義的對象。
38 //定義MouseLeftButton類,模擬鼠標左鍵對象
39 public class MouseLeftButton
40 {
41 //聲明一個鼠標點擊委托
42 public delegate void ClickHandler();
43
44 public event ClickHandler clickHandler;
45
46 public void OnDoubleClick()
47 {
48 if (clickHandler != null)
49 {
50 clickHandler(); /* 事件被觸發 */
51 }
52 else
53 {
54 Console.WriteLine("無訂閱事件處理程序,未檢測到點擊相應按鈕,點擊無效!");
55 }
56 }
57
58 public MouseLeftButton() {
59 OnDoubleClick();
60 }
61
62 }
2、去掉event關鍵字不要,程序也能正常執行。但是,這是發布器類的委托失去了保護,可以觸發任何可能的操作。
1 //事件及even關鍵字存在的意義
2 class Program
3 {
4 //事件,發布(publisher)-訂閱(subscriber)模型
5 static void Main(string[] args)
6 {
7 MouseLeftButton e = new MouseLeftButton(); /* 實例化對象,第一次沒有觸發事件 */
8 subscribEvent v = new subscribEvent(); /* 實例化對象 */
9 e.clickHandler += v.clickChromeBrowserIcon; /* 注冊 訂閱雙擊點擊瀏覽器圖標 */
10 e.clickHandler += v.clickWeChatIcon;
11 Console.WriteLine("我的電腦不受控制了,沒有點擊也打開了瀏覽器和微信!");
12 e.clickHandler();//可以直接調用了委托
13
14 }
15 }
16
17
18 //事件訂閱器類,提供事件處理程序的對象,就是事件發生了要做什么事情。
19 public class subscribEvent
20 {
21 //點擊谷歌瀏覽器圖標
22 public void clickChromeBrowserIcon()
23 {
24 Console.WriteLine("瀏覽器打開,我輸入了博客園網址打開了博客園網站首頁!");
25 }
26
27 //點擊桌面微信圖標
28 public void clickWeChatIcon()
29 {
30 Console.WriteLine("微信客戶端打開,我登錄了我的微信!");
31 }
32 }
33
34 //事件發布器類,用于發布事件,包含事件和委托定義的對象。
35 //定義MouseLeftButton類,模擬鼠標左鍵對象
36 public class MouseLeftButton
37 {
38 //聲明一個鼠標點擊委托
39 public delegate void ClickHandler();
40
41 public ClickHandler clickHandler;
42
43 public void OnDoubleClick()
44 {
45 if (clickHandler != null)
46 {
47 clickHandler(); /* 事件被觸發 */
48 }
49 else
50 {
51 Console.WriteLine("無訂閱事件處理程序,未檢測到點擊相應按鈕,點擊無效!");
52 }
53 }
54
55 public MouseLeftButton() {
56 OnDoubleClick();
57 }
58
59 }
3、加上關鍵字event后,會發現以下錯誤
總結
以上是生活随笔為你收集整理的C# 之事件及event关键字存在的意义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http协议的缺点和确保web安全的ht
- 下一篇: C# 搭建一个 基于ISqlSugarC