深入理解C# 委托與事件
這是一個簡單的委托樣例
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ù)指針的意思
委托就是我給你原材料,你給我我要的成品,至于你拿我原材料干啥,我不是深究。
于是,有一個問題,為什么我不直接調(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;
}
}
我有一個方案test他的一切都是固定下來的,但是他的計算方法是多變的,因?yàn)槲覀兛梢杂梦衼砀淖儌魅氲姆椒?br />于是我們在不改變test的情況下讓他有了更多的功能
接下來就是事件
到此這篇關(guān)于深入理解C# 委托與事件的文章就介紹到這了,更多相關(guān)C# 委托與事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WPF彈出右鍵菜單時判斷鼠標(biāo)是否選中該項(xiàng)
這篇文章介紹了WPF彈出右鍵菜單時判斷鼠標(biāo)是否選中該項(xiàng)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
詳解C# 網(wǎng)絡(luò)編程系列:實(shí)現(xiàn)類似QQ的即時通信程序
本篇主要介紹了c#實(shí)現(xiàn)類似QQ的即時通信程序 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12
Unity ScrollRect實(shí)現(xiàn)軌跡滑動效果
這篇文章主要為大家詳細(xì)介紹了Unity ScrollRect實(shí)現(xiàn)軌跡滑動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
C#使用Socket快速判斷數(shù)據(jù)庫連接是否正常的方法
這篇文章主要介紹了C#使用Socket快速判斷數(shù)據(jù)庫連接是否正常的方法,涉及C#中socket操作的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-04-04

