C 委託基礎

2021-08-21 12:38:17 字數 1646 閱讀 1243

在學到方法引數傳遞和返回值後,有時候就會想,如果方法也能當引數進行傳遞,那很多時候就很方便了,這時候我們就會想到一種型別---委託了。

委託關鍵字為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...