首页 > 代码库 > .Net Framework中的提供的常用委托类型
.Net Framework中的提供的常用委托类型
.Net Framework中提供有一些常用的预定义委托:Action、Func、Predicate。用到委托的时候建议尽量使用这些委托类型,而不是在代码中定义更多的委托类型。这样既可以减少系统中的类型数目,又可以简化代码。这些委托类型应该可以满足大部分需求。
Action
没有返回值的委托类型。.Net Framework提供了17个Action委托,从无参数一直到最多16个参数。
定义如下:
1 public delegate void Action();2 public delegate void Action<in T>(T obj);3 public delegate void Action<in T1,in T2>(T1 arg1, T2 arg2);
.
.
.
用法:
无参数:
public void ActionWithoutParam() { Console.WriteLine("this is an Action delegate"); } Action oneAction = new Action(ActionWithoutParam);
有参数:
Action<int> printRoot = delegate(int number) { Console.WriteLine(Math.Sqrt(number)); };
Func
有一个返回值的委托。.Net Framework提供了17个Func委托,从无参数一直到最多16个参数。
定义如下:
public delegate TResult Func<out TResult>();public delegate TResult Func<in T, out TResult>(T arg);...
用法:
public bool Compare(int x, int y) { return x > y; } Func<int, int, bool> f = new Func<int, int, bool>(Compare); bool result = f(100, 300);
Predicate
等同于Func<T, bool>。表示定义一组条件并确定指定对象是否符合这些条件的方法。
定义如下:
public delegate bool Predicate<in T>(T obj);
用法:
public bool isEven(int a) { return a % 2 == 0; } Predicate<int> t = new Predicate<int>(isEven);
其他
除了上述的三种常用类型之外,还有Comparison<T>和Coverter<T>。
public delegate int Comparison<in T>(T x, T y); public delegate TOutput Converter<in TInput, out TOutput>(TInput input);
总结
- Action:没有参数没有返回值
- Action<T>:有参数没有返回值
- Func<T>: 有返回值
- Predicate<T>:有一个bool类型的返回值,多用在比较的方法中
以上。
.Net Framework中的提供的常用委托类型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。