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

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

Action<in T> 或Action<in T1,...,in Tn>      即 delegate void System.Action<in T1,...,in Tn>(T1 arg1,...,Tn argn)    //

Func<in T1,...in Tn,out TResult>     即 delegate TResule System.Func<in T1,...,in Tn,out TResult>(T1 arg1,...,Tn argn)

Predicate<in T>                        即 delegate bool System.Predicate<in T>(T obj)

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

Converter<in TInput, out TOutput>              即 delegate TOutput System.Converter<in TInput, out TOutput>(TInput  input)

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

 

 

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

                                             List<Student> data=new List<Student>();

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

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

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

                                           List<Student> students=new List<Student>();

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

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

 

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

ThreadStart委托:

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

ParameterizedThreadStart委托:

public delegate void ParameterizedThreadStart(object obj);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值