思考::static關鍵字是什麼??
加上這個關鍵字,這個方法只能,在本類中使用!!!
簡記::想做什麼事情,但是又不確定,就用委託佔位;然後將方法作為傳遞!
1、什麼是委託?
委託就是把「方法」作為引數進行傳遞!
委託是一種「資料型別」,像類一樣(可以宣告委託型別變數)
2、定義的方法沒有返回值,那麼定義的委託也沒有返回值;
3、定義的方法沒有引數,那麼定義的委託也沒有引數;
4、格式:
關鍵字 delegate 返回值型別 委託名字([資料型別 變數],[資料型別 變數],...);
5、定義乙個沒有返回值的委託:
[code]class
program
//1、定義一種方法
public
static
void
say()
//2、定義方法show來將方法 say 作為引數進行傳遞
public
static
void show(*** oo)//
此處的***可以理解為乙個類 oo就是宣告的引數
}[/code]
6、定義乙個有返回值的委託
classprogram
//1、寫乙個方法add
public
static
int add(int n1,int
n2)
//2、寫個方法test,用來呼叫方法add();
//public static void test()
//public
static
void test(mydelegate mdl)//
將定義的委託名字 mydelegate 放在test()方法中,並宣告乙個引數
}
f11進行逐步 除錯!
案例1:在指定的位置記錄當前的時間,(1、輸出到控制台,2、寫入檔案)
classprogram
public
static
void
say()
public
static
void
dosth()
public
static
void
show(mydelegate mdl)
}
案例2:單獨建立乙個類庫;有乙個方法changestring(string name,mydelegate)
傳入乙個字串陣列,在每個元素兩邊加上乙個「=」,
//當我想讓元素全部大寫,怎麼辦??(可以將委託作為引數)將使用者達**,「注入」到你的程式中。
classprogram
;changestr sr = new
changestr();
sr.changestring(names, test);
//6、可以發現沒有返回值,所以再次遍歷,進行讀取
for (int i = 0; i < names.length; i++)
//7、
console.readkey();
}//2、做一件事情,對陣列中的每個名字,做一些加工,怎麼做
//就是 兩邊加上*****=的樣式
public
static
string test(string
name)
public
static
string do(string
name)
//3.需要遍歷陣列,接下來,寫個類changestr對陣列,進行遍歷字串陣列的方法}
//這個就是test()方法,封轉的乙個委託,,類似,對字段的封裝了
//參照test()的 返回值型別,和引數個數
//很明顯,這個就是有"返回值"的,並且是"帶引數"的 委託
public
delegate
string mydelegate(string name); //
5、public
class
changestr}}
}
總結委託如下:
宣告委託的方式: delegate 返回值型別 委託型別名(引數)
比如:delegate void mydel(int n)
注意這裡的除了前面的delegate,剩下部分和宣告乙個函式一樣,但是mydel不是函式名,而是委託型別名 儲存什麼樣的方法就宣告什麼型別(方法引數與返回值)的委託。
宣告的委託是一種型別,就像int、person一樣,如果要用的話還要宣告委託型別的變數,宣告委託型別變數的方式:mydel f1;
將委託型別變數指向函式 mydel sp = new mydel (sayhello),這樣就可以像呼叫普通函式一樣把sp當成函式用了。
委託可以看做是函式的指標。
整數可以用整數變數指向它,物件可以用物件變數指向它,函式也可以用委託變數指向它。和直接呼叫函式的區別:用委託就可以指向任意的函式,哪怕是之前沒定義的都可以,而不使用受限於那幾種。
將委託型別變數指向函式還可以簡化成mydel sp = sayhello,編譯器幫我們進行了new。但是不能sp=printit(),因為這樣就成了函式呼叫。
什麼是委託
什麼是委託 首先要知道什麼是委託,用最通俗易懂的話來講,你就可以把委託看成是用來執行方法 函式 的乙個東西。如何使用委託 在使用委託的時候,你可以像對待乙個類一樣對待它。即先宣告,再例項化。只是有點不同,類在例項化之後叫物件或例項,但委託在例項化後仍叫委託。宣告,如 1 namespace vczx...
什麼是委託,理解委託
我自己的比較抽象粗淺的認識是 乙個類想執行乙個方法,但它本身沒有這個方法,這個方法在另乙個類中,於是它 委託 那個類來幫它執行 接觸c 是在兩年前了,今天才算對這個概念有個粗淺的認識,慚愧啊 mailmanager類想執行fax類的faxmsg方法,但是fax類不讓執行,所以mailmanager就...
什麼是委託?為什麼要使用委託?什麼是事件?
1 什麼是委託?首先宣告乙個委託 public delegate string islengthfive string s 下面寫幾個方法 public string dowork string a public string dosomework string b public string do...