C#中常見的系統內建委託用法詳解
這篇文章主要介紹了C#中常見的系統內建委託用法,主要包括了Action類的委託、Func類的委託、Predicate<T>委託、Comparison<T>委託等,需要的朋友可以參考下
一般來說,C#在公共語言執行時(CLR)環境中系統為我們內建了一些常用的委託,包括Action類的委託、Func類的委託、Predicate<T>委託、Comparison<T>委託等等。以上這些委託的名稱空間都是System,所屬程式集都是 mscorlib.dll,今天本文就來講一講這些委託的使用方法。
就像我們自己已定義好的一樣,要實現某些功能,我們可以直接利用系統內建委託,例項化它們,而不必顯式定義一個新委託並將命名方法分配給該委託。如:
1 2 3 4 5 6 7 8 9 |
public
static
void
Test()
{
Console.WriteLine( "Just
For Test" );
}
static
void
Main( string []
args)
{
Action
a = new
Action(Test); //直接例項化一個Action委託,不用自己再定義新委託
a();
}
|
只要瞭解了該系統內建委託是幹什麼的,傳什麼引數,返回什麼值,大家就可以仿上述例子自行呼叫,不再贅述。下面是我對這四類委託的總結,並附有結合匿名方法與Lambda表示式的範例,兩種方法實現的結果一樣,大家可舉一反三,靈活運用。
一、Action類的委託
1.Action委託 封裝一個方法,該方法不具有引數並且不返回值
2.Action<T>委託 封裝一個方法,該方法只有一個引數並且不返回值
3.Action<T1,T2>委託 封裝一個方法,該方法具有兩個引數並且不返回值
…… ……
17.Action<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>委託 封裝一個方法,該方法具有16個引數並且不返回值
下面以Action<T>委託為例,示範如何使用Action類的委託,該類委託僅僅是引數個數上有區別而已。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
static
void
Main( string []
args)
{
#region
Action<T>委託示例
//需求:打印出整型集合list的元素
List< int >
list = new
List< int >()
{ 1, 2, 3, 4, 5 };
//將匿名方法分配給
Action<T> 委託例項
Action< int >
concat1 = delegate (
|