深入理解C# 委托與事件
這是一個(gè)簡單的委托樣例
class TODO { public static void Main(String[] args) { Cal aa = new Cal(Add); Console.WriteLine(aa(2, 3)); } public delegate int Cal(int a, int b); private static int Add(int a, int b) { return a + b; } private static int Dec(int a, int b) { return a - b; } }
如此簡單的應(yīng)用就是函數(shù)指針的意思
委托就是我給你原材料,你給我我要的成品,至于你拿我原材料干啥,我不是深究。
于是,有一個(gè)問題,為什么我不直接調(diào)用Add
或者Dec
函數(shù)呢?
這就是委托最大的好處,變量分離,將不變的封裝起來,隔離變化,例子如下:
class TODO { public static void Main(String[] args) { test(Add, 2, 3, 4); } public delegate int Cal(int a, int b); internal static void test(Cal cc, int a, int b, int c) { int x = 0; int y = 0; if (a > b) { if (a > c) { x = a; } else { if (b > c) { y = b; } else { y = c; } } } else { if (b > c) { x = b; } else { x = c; if (a > b) { y = a; } else { y = b; } } } int result = cc(x, y); Console.WriteLine(result); } private static int Add(int a, int b) { return a + b; } private static int Dec(int a, int b) { return a - b; } }
我有一個(gè)方案test
他的一切都是固定下來的,但是他的計(jì)算方法是多變的,因?yàn)槲覀兛梢杂梦衼砀淖儌魅氲姆椒?br />于是我們在不改變test
的情況下讓他有了更多的功能
接下來就是事件
到此這篇關(guān)于深入理解C# 委托與事件的文章就介紹到這了,更多相關(guān)C# 委托與事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WPF彈出右鍵菜單時(shí)判斷鼠標(biāo)是否選中該項(xiàng)
這篇文章介紹了WPF彈出右鍵菜單時(shí)判斷鼠標(biāo)是否選中該項(xiàng)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06詳解C# 網(wǎng)絡(luò)編程系列:實(shí)現(xiàn)類似QQ的即時(shí)通信程序
本篇主要介紹了c#實(shí)現(xiàn)類似QQ的即時(shí)通信程序 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12Unity ScrollRect實(shí)現(xiàn)軌跡滑動效果
這篇文章主要為大家詳細(xì)介紹了Unity ScrollRect實(shí)現(xiàn)軌跡滑動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09C#使用Socket快速判斷數(shù)據(jù)庫連接是否正常的方法
這篇文章主要介紹了C#使用Socket快速判斷數(shù)據(jù)庫連接是否正常的方法,涉及C#中socket操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04