玩轉C#之【委派&事件】

更新於 2024/09/11閱讀時間約 1 分鐘

介紹

委派

透過委派可以實現把方法作為參數傳遞
從範例可以看出我們將DoNothing當成參數在傳遞
public delegate void Test();
void Main()
{
Test method = new Test(this.DoNothing);//實體化一個委派
method += new Test(this.DoNothing);//實體化一個委派

method();//也可以省略Invoke的寫法
}

private void DoNothing()
{
Console.WriteLine("Test");
}

事件

事件:是帶event關鍵字的委派的實體,可以限制變數被外部直接使用/直接賦予值(安全保障)
特點:
  • 不能直接Invoke()
  • 不能 賦予 null => = null
委派和事件的區別和關係?
  • 委派是一個類型
  • 事件是委派類型的一個實例
事件:可以把一堆可變的動作/行為封裝出去,交給第三方指定
預定義一樣,程式設計的時候,我們可以把程式分成兩部分
一部分是固定的,直接寫死,還有不固定的地方,通過一個事件去開放接口,外部可以隨意地擴展動作
框架:完成固定/通用部分,把可變部分留出擴展點,支持自定義
譬如:我們在設計WinFrom的時候,框架已經把Butoon的偵測鼠左鍵點擊的寫完了,而我們只需要去撰寫滑鼠左健點下去要做的事情。

使用方式

  1. 宣告一個委派型別
    public delegate void NoReturnNoPara();
  2. 產生一個委派物件
    Test method = new Test(this.DoNothing);//實體化一個委派
  3. 執行委派方法method.Invoke();//使用他的方法
    method();//也可以省略Invoke的寫法
關於泛型委派、解偶、非同步多執行緒、委派的歷史寫法演進之後會專門寫一篇文章跟大家講解

參考資料

本篇已同步發表至個人部落格
https://moushih.com/2022ithome11/
鐵人賽文章
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
8會員
39內容數
我是這個部落格的作者,喜歡分享有關投資 💰、軟體開發 💻、占卜 🔮 和虛擬貨幣 🚀 的知識和經驗。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
一代軍師 的其他內容
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
介紹 在程式中你看到上面有一個中括號[] 就是特性,它自身沒有任何功能。 📷 特性attribute,和注釋有什麼區別 第一個感受 特性:中括號宣告 錯覺:每一個特性都可以帶來對應的功能 實際上添加後,編譯器會在元素內部產生IL,但是我們是沒辦法直接使用的,而且在metadata會有紀錄 📷
介紹 反射:System.Reflection .Net框架提供的Library,可以讀取並使用metadata Dll-IL-Metadata-反射 透過VS編譯器 編譯成dll/exe 點擊exe的時候,他有一個依賴的環境叫做CLR IL:可以透過ILSpy(反編譯工具) 📷 一般情況
介紹 在C#2.0時代以前,是沒有泛型的,所以當我們遇到需求是方法內做相同的事情,但因為輸入或輸出的型別不一樣,我們就必須重複寫出類似的程式 以下的例子是=>不同的輸入型別 但卻做相同的事情 =>印出輸入資料 範例: 輸入參數:int或string或DateTime 功能:印出輸入的"數值"
介紹 分層架構模式,是將一個軟體系統進行分層,每個軟體系統都去要通過層來隔離不同的關注點,其中最為經典的就是三層架構以及領域驅動設計提出的四層架構。 📷 三層式架構 下面會介紹每一層專門要處理的事情 最常是用的分層方式 至於每層模組的命名方式,每間公司都不太ㄧ樣 📷 參考資料 鐵人賽文章
介紹 類似Windows排程的一個套件,不過他有Dashboard可以看 可以用在商業用途 使用情境 簡單來說如果你需要定時的執行某一段程式就可以使用這個套件來幫你完成。 優點 Simple 開發簡易、安裝簡單、方便部署 Persistent 工作任務可存放於多種儲存裝置 任務執行方式 版本 📷
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
介紹 在程式中你看到上面有一個中括號[] 就是特性,它自身沒有任何功能。 📷 特性attribute,和注釋有什麼區別 第一個感受 特性:中括號宣告 錯覺:每一個特性都可以帶來對應的功能 實際上添加後,編譯器會在元素內部產生IL,但是我們是沒辦法直接使用的,而且在metadata會有紀錄 📷
介紹 反射:System.Reflection .Net框架提供的Library,可以讀取並使用metadata Dll-IL-Metadata-反射 透過VS編譯器 編譯成dll/exe 點擊exe的時候,他有一個依賴的環境叫做CLR IL:可以透過ILSpy(反編譯工具) 📷 一般情況
介紹 在C#2.0時代以前,是沒有泛型的,所以當我們遇到需求是方法內做相同的事情,但因為輸入或輸出的型別不一樣,我們就必須重複寫出類似的程式 以下的例子是=>不同的輸入型別 但卻做相同的事情 =>印出輸入資料 範例: 輸入參數:int或string或DateTime 功能:印出輸入的"數值"
介紹 分層架構模式,是將一個軟體系統進行分層,每個軟體系統都去要通過層來隔離不同的關注點,其中最為經典的就是三層架構以及領域驅動設計提出的四層架構。 📷 三層式架構 下面會介紹每一層專門要處理的事情 最常是用的分層方式 至於每層模組的命名方式,每間公司都不太ㄧ樣 📷 參考資料 鐵人賽文章
介紹 類似Windows排程的一個套件,不過他有Dashboard可以看 可以用在商業用途 使用情境 簡單來說如果你需要定時的執行某一段程式就可以使用這個套件來幫你完成。 優點 Simple 開發簡易、安裝簡單、方便部署 Persistent 工作任務可存放於多種儲存裝置 任務執行方式 版本 📷
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Token Extension的主角之一 Transfer Fee 目前官方釋出的代幣擴充功能總共 14 項,其中又以 Transfer fee 這個擴充為最多人使用。Transfer fee 嚴格規範了每筆轉帳交易的手續費,讓代幣的發行者擁有更好手續費來源,同時也保障 NFT 創作者的版稅收益。
Thumbnail
今年一月正式推出的 Solana 上的新標準 Token Extension,重塑了之前 Solana 所使用的 token 協議,替 Solana的鏈上資產解放更多潛力。資產之間的交互將變得更靈活,除了讓帳戶之間的轉帳更有保障之外,也在 Defi 未來的結構性商品上產生了更多的想像空間。
Thumbnail
《玩轉腦朋友2》刪除角色1:Shame 羞恥 在《玩轉腦朋友》的開發過程中,「羞恥」原本是27種情緒之一,最初設計為男性角色。但在續集中,「羞恥」被重新塑造成女性角色,預計成為新的情緒角色。然而,導演認為「羞恥」會讓萊莉的成長故事過於沉重和黑暗,因此將這種情緒融合進「阿焦」的性格中,成為「我不夠
Thumbnail
這是一篇關於名古屋旅遊的文章,介紹了從機場到市區、不同景點的遊玩體驗,特別適合親子自由行。
Thumbnail
通路創新和創意結合,帶來了許多令人驚喜的商業案例。從Amazon Go的無人商店到UBEREAT機器人送餐,不同品牌都在用新科技改變生活方式。本文分享了幾個成功的通路創新案例,絕對能啟發你的Idea!
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Token Extension的主角之一 Transfer Fee 目前官方釋出的代幣擴充功能總共 14 項,其中又以 Transfer fee 這個擴充為最多人使用。Transfer fee 嚴格規範了每筆轉帳交易的手續費,讓代幣的發行者擁有更好手續費來源,同時也保障 NFT 創作者的版稅收益。
Thumbnail
今年一月正式推出的 Solana 上的新標準 Token Extension,重塑了之前 Solana 所使用的 token 協議,替 Solana的鏈上資產解放更多潛力。資產之間的交互將變得更靈活,除了讓帳戶之間的轉帳更有保障之外,也在 Defi 未來的結構性商品上產生了更多的想像空間。
Thumbnail
《玩轉腦朋友2》刪除角色1:Shame 羞恥 在《玩轉腦朋友》的開發過程中,「羞恥」原本是27種情緒之一,最初設計為男性角色。但在續集中,「羞恥」被重新塑造成女性角色,預計成為新的情緒角色。然而,導演認為「羞恥」會讓萊莉的成長故事過於沉重和黑暗,因此將這種情緒融合進「阿焦」的性格中,成為「我不夠
Thumbnail
這是一篇關於名古屋旅遊的文章,介紹了從機場到市區、不同景點的遊玩體驗,特別適合親子自由行。
Thumbnail
通路創新和創意結合,帶來了許多令人驚喜的商業案例。從Amazon Go的無人商店到UBEREAT機器人送餐,不同品牌都在用新科技改變生活方式。本文分享了幾個成功的通路創新案例,絕對能啟發你的Idea!
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜