C#中常用的几种预定义委托

在System命名空间中,定义了一些常用的委托,如Action,Func,Predicate,Comparison,Converter, EventHandler等。需要注意的是,参数带有in的,表示逆变;参数带有out的,表示协变。

Action 或Action      即 delegate void System.Action(T1 arg1,...,Tn argn)    //

Func     即 delegate TResule System.Func(T1 arg1,...,Tn argn)

Predicate                        即 delegate bool System.Predicate(T obj)

Comparison                        即delegate int System.Comparison(T arg1,T arg2)

Converter              即 delegate TOutput System.Converter(TInput  input)

EventHandler                  即delegate void System.EventHandler(object sender,TEventArgs arg)

 

 

Comparison委托应用举例: List.Sort(Comparison comparison)方法,比如

                                             List data=new List();

                                              .......//初始化一些数据

                                            data.Sort(  (a,b)=>{return a.Age.CompareTo(b.Age);} );

Converter委托应用举例: List     List.ConvertAll(Converter converter)方法,比如

                                           List students=new List();

                                              .......//初始化一些数据

                                          List persons=  students.ConvertAll(  (s)=>{return (Person)s;} );    //假设Student从Person继承而来

 

以下两个委托是多线程中常用的两个委托:

ThreadStart委托:

[System.Runtime.InteropServices.ComVisible(true)]
public delegate void ThreadStart();

ParameterizedThreadStart委托:

public delegate void ParameterizedThreadStart(object obj);

 

你可能感兴趣的:(C#语言)