明天還要上班,可我這會兒,總想著寫篇博文,要不感覺就像丟了件東西似的,睡不著。成全我自己吧。
剛走入工作的我,為了更好的工作,我就讓自己回爐一次,更深入的理解各個知識點。
今晚就從委託與事件開始。。
1.什麼是委託。
委託是一種資料結構,能夠引用靜態方法或引用例項及其例項方法,他是完全物件導向的,同時也封裝了物件例項和方法。委託例項封
裝了乙個呼叫列表,該列表包含了乙個會多個方法,每個方法稱為乙個可呼叫實體。
2.我用**展示委託使用的全過程。(看從1-->5的順序)
//1.委託的宣告,delegate為宣告委託的關鍵字;3. 委託的你深入應用//public為修飾符,還可以有的修飾符為 protected、internal、private、new
//new修飾符,只能在其他型別中宣告委託時使用,他表示所標明的委託會隱藏具有相同名稱的繼承成員
public delegate void d(int i, int j);
public class program
}public class u
public static void f2(int w, int j)
}
public delegate void helloworld(string name); //宣告委託4.事件的使用class program
;sedelegate("匿名方法");
//使用拉姆達表示式
helloworld thdelegate = (p => );
thdelegate("拉姆達表示式");
//使用action
actionfordelegate=(p=>);
fordelegate("action");
//使用func
funcfidelegate = (p => p + ",你好!");
string sayhello = fidelegate("func");
console.writeline(sayhello);
console.readkey();
}public void ff(string name)
}
事件是一種使物件或類能夠提供通知的成員,其實也是一種特殊型別的委託。他包含兩個引數:指示事件源的「物件源」引數和封裝事件的其他任何相關資訊的e引數。其中,e引數的型別為system.eventargs型別或從這型別中派生的型別。
1.事件的簡單認識
namespace 事件2.事件的應用(observer設計模式--熱水器)static void main(string args)
}public class greetingmanager}}
using system;using system.collections.generic;
using system.text;
namespace delegate
}// 可以供繼承自 heater 的類重寫,以便繼承類拒絕其他物件對它的監視
protected virtual void onboiled(boiledeventargs e)
}// 燒水。
public void boilwater() }}
}// 警報器
public class alarm - : ", heater.area, heater.type);
console.writeline("alarm: 嘀嘀嘀,水已經 度了:", e.temperature);
console.writeline();}}
// 顯示器
public class display - : ", heater.area, heater.type);
console.writeline("display:水快燒開了,當前溫度:度。", e.temperature);
console.writeline();}}
class program
}}輸出為:
alarm:china xian - realfire 001:
alarm: 嘀嘀嘀,水已經 96 度了:
alarm:china xian - realfire 001:
alarm: 嘀嘀嘀,水已經 96 度了:
alarm:china xian - realfire 001:
alarm: 嘀嘀嘀,水已經 96 度了:
display:china xian - realfire 001:
display:水快燒開了,當前溫度:96度。
// 省略 ...
委託與事件
1.建立乙個類,分別建立加 減 乘 除四個方法,通過委託和事件,實現 輸入兩個計算數,完成所有的四個方法的呼叫,計算出結果顯示。建立乙個警察 policeman 類,乙個小偷 thief 類,例項化兩個類的物件,當policeman類中警笛鳴響 alarm 方法執行時,觸發小偷逃跑 runaway ...
委託與事件
委託就是以方法做引數進行傳遞,它定義的是方法的框架,如果用這個委託,所宣告的方法就必須按照給定的引數及返滬型別進行處理。宣告委託的方式 delegate 返回值型別 委託型別名 引數 比如delegate void stringprocess string s 注意這裡的除了前面的delegate,...
委託與事件
委託與事件 一 委託 delegate 1 委託是一種可以把引用儲存為函式的型別。2 在定義了委託後,就可以宣告該委託型別的變數,接著把這個變數初始化為與委託有相同返回型別和引數類別的函式引用,之後,就可以使用委託變數呼叫這個函式,就像該變數是乙個函式一樣。如 double multiply dou...