在學到方法引數傳遞和返回值後,有時候就會想,如果方法也能當引數進行傳遞,那很多時候就很方便了,這時候我們就會想到一種型別---委託了。
委託關鍵字為delegate 下面我們來看看它的基本用法
public delegate void mydele();//定義了乙個無參無返回值的委託型別
public delegate int mydele1();//定義了乙個返回值為int,無參的委託型別
public delegate void mydele2(int a);//定義了乙個無返回值,引數為int的委託型別
public delegate int mydele3(int a, string b);//定義了乙個返回值為int,引數為int和string的委託型別
public void text0()
public int text1()
public void text2(int data)
public int text3(int data,string str)
public void text4(delegate a)
public void text()
委託中新增和刪除方法
乙個委託可以指向多個方法,第一次呼叫是呼叫最近一次新增的方法。
mydele+=text5;
mydele-=text4;
mydele=text;//等於號為賦值,直接覆蓋裡面所有的方法
上面**演示了普通委託的定義宣告和使用,乙個委託可定義最多有16個引數的,下面我們再看看系統自帶的三個特殊委託
action委託:
action是無返回值的泛型委託。
action 表示無參,無返回值的委託
action表示有傳入引數int,string無返回值的委託
func委託:
func是有返回值的泛型委託
func表示無參,返回值為int的委託
func表示傳入引數為object, string 返回值為int的委託
predicate委託:
predicate 是返回bool型的泛型委託
predicate表示傳入引數為int 返回bool的委託。
使用labmda表示式使用委託:
mydele d2= (string name) => !", name); };
d2("terry");
括號中的string name表示方法引數,大括號裡的是方法體。
使用匿名方法使用委託:
delegate void testdelegate(string myname);
testdelegate d2 = delegate(string name)
!", name);
};d2(「test」);
相當於用delegate代替了方法名。
事件事件也是一種特殊的委託,事件只能在本類的內部使用=賦值,只能在本類內部呼叫,在外部類中,只能使用+=和-=新增和刪除,不能在外部類呼叫,事件大大增加了委託的安全性和規範性。事件使用關鍵字event。
public event mydele mydele = text0;
C 委託基礎1 委託基礎
委託和其委託的方法必須具有相同的簽名。簽名相同 1.引數型別相同 2.引數數量相同 3.返回值一致 例一 class program static void main string args mm 7,6 console.readline 例二 class program double subtra...
c 委託基礎
委託 1.概念 委託是函式的封裝,它代表一 類 函式。它們都符合一定的簽名 擁有相同的引數列表 返回值型別。同時,委託也可以看成是對 函式的抽象,是函式的 類 2.語法 delegate argument list 3.用法 1.宣告委託,比如 public delegate void del st...
C 基礎 委託
一 委託 當我們需要把方法做為引數傳遞給其他方法的時候,就需要使用委託。因為有時候,我們要操作的物件,不是針對資料進行的,而是針對某個方法進行的操作。我們還是來以 入手 using system using system.collections.generic using system.linq u...