舉個不是很恰當的例子:某個檢測系統,檢測到某國有某個工廠出現故障,需要及時通知工廠進行故障檢修,第n天,故障修復,反響不錯,各個工廠爭先恐後的想要附加這個功能,針對這個不恰當的案例我們寫乙個案例:
publicstatic
class
delegateservice
return
fullname;
}//////
根據簡稱獲取企業名稱(勝利油田)
/// private
static
string getslytnamebyshortname(string
shortname)
//////
根據簡稱獲取企業名稱(中**田)
/// private
static
string getzyytnamebyshortname(string
shortname)
}
string name = "slyt";
string fullname =delegateservice.getcompanybyname(name);
console.writeline($
"不使用委託: 故障了,請檢修
");
publicstatic
string getname(string name, *** companydelegate)
聰明的你應該已經想到了,現在是委託該出場的時候了,但講述委託之前,我們再看看companydelegate引數所能代表的 getslytnamebyshortname()和getzyytnamebyshortname()方法的簽名:
publicstatic
string getslytnamebyshortname(string
shortname)
public
static
string getzyytnamebyshortname(string shortname)
本例中委託的定義:
//定義委託
public
delegate
string companydelegate(string name);
可以與上面getslytnamebyshortname()方法的簽名對比一下,除了加入了delegate關鍵字以外,其餘的是不是完全一樣?
現在,讓我們再次改動getname()方法,如下所示:
publicstatic
string getname(string
name, companydelegate companydelegate)
下面我們看一下完成的**:
namespacestudy.consolecore
//////
根據簡稱獲取企業名稱(勝利油田)
/// public
static
string getslytnamebyshortname(string
shortname);}
//////
根據簡稱獲取企業名稱(中**田)
/// public
static
string getzyytnamebyshortname(string
shortname);}
}}
string name = "slyt";
companydelegate company =delegateservice.getslytnamebyshortname;
//第一種寫法
string fullnamedelegate1 =delegateservice.getname(name, company);
console.writeline($
"使用委託1:");
//第二種寫法
string fullnamedelegate2 =company(name);
console.writeline($
"使用委託2:
");
個人學習 C 反射
反射是.net中的重要機制,通過反射,可以在執行時獲得程式或程式集中每乙個型別 包括類 結構 委託 介面和列舉等 的成員和成員的資訊。有了反射,即可對每乙個型別瞭如指掌。另外我還可以直接建立物件,即使這個物件的型別在編譯時還不知道。二 反射的命名空間及主要類的用途 system.type下 type...
C語言個人學習筆記
在匯程式設計序中,乙個函式的開頭常常見到以下 8048cbd 83 ec 18 sub 0x18,esp這句話的目的是分配棧幀。棧幀中存放的是程式中的區域性變數。在windows的編譯器cl.exe中這些棧幀中的值最初會被初始化為0xcc,這也是為什麼vc 在陣列越界或訪問未賦值的記憶體時列印 燙燙...
個人學習C語言流程
2 自己看c程式設計和明解c等相關書籍入門學習 3 自己多敲 一定要多敲 4 積極與志同道合的人互相學習一起努力。5 如若發現問題,先自己想辦法解決,實在解決不了,就請教自己認識的大佬們。6 學習時長 打算每週花費至少15h在這個上面 不耽誤目前的工作的情況下 希望能夠通過自己的學習,進入乙個大廠後...