Delegate使用從1 0到4 5

2022-04-08 08:42:52 字數 2202 閱讀 5789

c# 從1.x 發展到目前的 4.5,委託的寫法真是越來越簡單精悍。如果您對這些委託的寫法不是很清晰,本文可以幫助到您。

委託是一種安全封裝方法的型別,可以將方法作為方法的引數。

委派方法的引數個數、順序、型別及方法返回值型別必須跟定義的委託方法一樣,但引數名稱可以不同

1、c# 定義乙個完整委託:

delegate

string saymessage(string

msg);

static

string sayhello(string

name)

", name);

}static

void main(string

args)

輸出結果:"hello 委託"

2、c#2.0後出現了匿名方法,可以將委託方法省略掉,直接給委託傳遞乙個匿名方法,當然也要去掉new這個動作。

delegate

string saymessage(string

msg);

static

void main(string

args)

", name);

};console.writeline(say(

"匿名方法

"));

console.readkey();

}

輸出結果:"hello 匿名方法"

3、 聰明的人們總是想使用更少的**達到相同的效果。因此c#3.0 之後出現了 lambda表示式、action委託、func 委託

(1) lambda表示式:匿名方法的公升級版,可以簡化匿名方法的寫法。寫法 (形參列表)=>

delegate

string saymessage(string

msg);

static

void main(string

args)

", name);

};console.writeline(say(

"lambda

"));

console.readkey();

}

輸出結果:"hello lambda"

通過看上面的**,能否將定義的委託 saymessage 也去掉嗎?當然可以,用 func委託 或者 action委託 就可以取代它!

(2)func 委託:當我們封裝乙個具有返回值方法的時候就可以使用func委託。

func 委託一共有 15種過載,但總會有乙個返回值,比如我們示例中用到的func委託就是其中之一。

封裝乙個具有乙個t型別引數並返回 tresult 型別值引數的方法。

如果封裝方法沒有有輸入引數則直接使用func委託。

static

void main(string

args)

", name);

};//

和lambda 結合

func say2 = (name) =>

", name);

};console.writeline(say1(

"func 委託

"));

console.writeline(say2(

"func 委託

"));

console.readkey();

}

輸出結果:"hello func 委託"

(3)action委託:當我們封裝乙個沒有返回引數的方法時,就可以使用action委託。

action委託也有 15種過載,封裝的方法可有有輸入引數,但不會有返回引數。

封裝乙個具有t型別引數且無返回值引數 的方法。

如果封裝方法沒有輸入引數則可以直接使用 action 委託。

static

void main(string

args)

", name));

};//

和lambda 結合

action say2 = (name)=>

", name));

};say1(

"action 委託");

say2(

"action 委託");

console.readkey();

}

輸出結果:"hello action 委託"

JAVA從入門到精通(4)

一 條件語句之if 語法 if 條件 解釋 需要先判斷條件,條件滿足後才執行後續的 注 如果if條件成立時的執行語句只有一條,是可以省略大括號的 但是執行語句有多條,那就不可以省略了。二 條件語句之if.else 語法 if 條件的布林表示式 else 解釋 條件成立時,則執行if部分的 塊 條件不...

MakeFile從入門到精通 4

makefile 變數 變數在makefile中大量使用,使得makefile更加靈活功能更加強大。同時造成了讀makefile更加難讀。所以我們要發點時間學學變數。變數基礎 變數分類 變數追加,條件賦值 目標變數 模式變數 自動變數 系統環境變數 變數傳遞 一般在makefile裡面的變數都是存的...

Java從漢字到拼音 pinyin4j使用

有時候,我們需要將漢字轉化成拼音,以方便查詢,如圖書系統中用拼音檢索書籍,以及通訊錄中快速查詢聯絡人等。乙個方法是使用map容器對,將漢字與拼音對應,如 中 對應 zhong 但由於map的自身限制,在多音字如 重 可對應 chong zhong 這時候就會出現問題。pinyin4j就是為了解決類似...