Action<T>和Func<T>委托数组
来源:互联网 发布:java 系统时间 格式化 编辑:程序博客网 时间:2024/05/04 19:59
C#编程过程中,除了利用delegate定义普通的委托类型以外,还可以利用Action<T>和Func<T>定义委托数组
Action<in T1,in T2...,in Tn>
Func<in T1,in T2...,in Tn,out Result>
以上是两者的定义格式,其中n小于等于16
相同点:可以调用最多16个参数的的方法,参数可以为0个;
不同点:Func<T>需要返回值参数,Action<T>不需要。
以下结合学习资料举两个例子
1,Action<T>
定义一个MathOperations类,在其中创建一些方法:
class MathOperations { public static void MultiplyByTwo(double value) { Console.WriteLine("2* {0} = {1}", value, value * 2); } public static void Square(double value) { Console.WriteLine("{0}* {1} = {2}", value, value, value * value); } public static void Introduction(double value) { Console.WriteLine("I'm a double. My value is {0}", value); } }
main方法实现:
static void Main(string[] args) { Action<double>[] operations = //定义委托数组,并传递方法 { MathOperations.MultiplyByTwo, MathOperations.Square, MathOperations.Introduction }; foreach (var del in operations) //遍历委托数组 { del(5); //对委托数组内的方法进行赋值 } Console.ReadKey(); }
输出结果:
2* 5 = 10
5* 5 = 25
I'm a double.My value is 5
添加MathOperations类一些方法:
public static double MultiplyByTwo1(double value)//double返回类型{return (value * 2);}public static double Square1(double value)//double返回类型{return (value * value);}在main中定义Func<T>
static void Main(string[] args) { Func<double, double>[] operations = { MathOperations.MultiplyByTwo1, MathOperations.Square1 }; foreach (var del in operations) { double result = 0; result = del(5); //获取返回值 Console.WriteLine(result);//输出 } Console.ReadKey(); }
输出结果:
10
25
总结:在程序中,需要方法有返回值的委托用Func,反之用Action
阅读全文
0 0
- Action<T>和Func<T>委托数组
- Action<T>和Func<T>委托
- Action<T>、Func<T>委托
- c#中Action<T>和Func<T>委托
- Action<T>和Func<T>泛型委托
- Action<T>和Func<T>泛型委托
- Action<T>和Func<T>泛型委托
- Action<T>和Func<T>泛型委托
- C#中的Action<T>、Func<T>委托和Lambda表达式
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- 【基础】C#:委托Action、Action<T>、Func<T>、Predicate<T>
- 泛型Action<T>委托和Func<T>委托是系统定义的两个泛型委托
- Action<T>和Func<T>的区别.
- Func<T>与Action<T>委托泛型介绍
- Func<T>与Action<T>委托泛型介绍
- C#基础:委托之Action<T>和Func<T>的用法
- Func<T, TResult> 委托
- GBDT(MART) 迭代决策树入门教程 | 简介
- 时间段插件daterangepicker —— 基本使用及回显问题解决方法
- gitlab project项目迁移
- LeetCode-----回文串分割
- 配置参数
- Action<T>和Func<T>委托数组
- Spatial Transfomer Networks
- 编译天嵌E8内核源码
- 永宁的GitHub开源项目
- 【LeetCode】 541. Reverse String II
- 关于Java的File.separator
- 进程与线程
- 深入浅析java web log4j 配置及在web项目中配置Log4j的技巧
- Python网络爬虫与信息提取(一)