深入理解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他的一切都是固定下來的,但是他的計算方法是多變的,因為我們可以用委托來改變傳入的方法
于是我們在不改變test的情況下讓他有了更多的功能
接下來就是事件
到此這篇關(guān)于深入理解C# 委托與事件的文章就介紹到這了,更多相關(guān)C# 委托與事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HttpWebRequest出錯.Section=ResponseHeader Detail=CR
HttpWebRequest出錯.Section=ResponseHeader Detail=CR...2007-03-03
linux操作系統(tǒng)安裝MONO執(zhí)行C#程序的詳解步驟
這篇文章主要介紹了linux操作系統(tǒng)安裝MONO執(zhí)行C#程序詳解步驟,有需要的可以參考一下2013-12-12
C#利用PrintDocument定制打印單據(jù)的小例子
這篇文章主要給大家介紹了關(guān)于C#利用PrintDocument定制打印單據(jù)的小例子,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
時間字符串轉(zhuǎn)換成日期對象datetime的方法
在遇到形如"2012-12-19T17:00:00Z"這樣的時間字符串時,怎樣轉(zhuǎn)換到DateTime類型呢,下面的方法可以解決2013-12-12
C#鉤子Hook監(jiān)聽鍵盤鼠標(biāo)事件實現(xiàn)窗體自動關(guān)閉
鉤子(Hook)的作用主要體現(xiàn)在監(jiān)視和攔截系統(tǒng)或進程中的各種事件消息,并進行自定義處理,本文主要介紹了C#如何利用鉤子Hook監(jiān)聽鍵盤鼠標(biāo)事件實現(xiàn)窗體自動關(guān)閉功能,感興趣的可以了解下2025-01-01

