Action<T>和Func<T>委托事例

using System;

//除了为每个参数和返回类型定义一个新委托类型之外,还可以使用Action<T>和Func<T>委托。
//泛型Action<T>委托表示引用一个void返回类型的方法。这个委托类存在不同的变体,可以传递至多16种不同的参数类型。
//没有泛型参数的Action类可以调用没有参数的方法。
//Action<in T>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法,Action<in T1,in T2,in T3,in T4,in T5,in T6,in T7,in T8>
//调用带8个参数的方法。 //Func<T>委托可以以类似的方式使用。Func<T>允许调用带返回类型的方法。与Action<T>类似,Func<T>也定义了不同的变体,
//至多也可以传递16个参数类型和一个返回类型。Func<out TResult>委托类型可以调用带返回类型且无参数的方法,Func<in T,out TResult>
//调用带一个参数的方法,Func<in T1,in T2,in T3,in T4,out TResult>调用4个参数的方法。
namespace Action和Func泛型委托的事例
{
class Program
{
static void Main(string[] args)
{
//泛型委托数组
Func<double ,double>[] operations = {
MathOperations.MultiplyByTwo,
MathOperations.Squre };
for(int i = ;i<operations.Length;i++){
System.Console.WriteLine($"Using operations[{i}]");
ProcessAndDisplayNumber(operations[i],2.0);
ProcessAndDisplayNumber(operations[i],7.94);
ProcessAndDisplayNumber(operations[i],1.414);
System.Console.WriteLine(); }
//Console.WriteLine("Hello World!");
} //使用该委托,并将ProcessAndDisplayNumber()方法作为参数:
static void ProcessAndDisplayNumber(Func<double,double> action,double value){
double result = action(value);
System.Console.WriteLine($"Value is {value},result of operation is {result}"); }
} //声明下需要调用的方法
class MathOperations{
public static double MultiplyByTwo(double value)=>value*;
public static double Squre(double value)=>value*value;
}
}

Action<T>和Func<T>委托事例的更多相关文章

  1. Action<T> 和 Func<T> 委托

    概述: 除了为每个参数和返回类型定义一个新委托类型之外,可以使用Action<T> 和 Func<T> 委托. Action<T> Action<T>委 ...

  2. Action<T>和Func<T>委托

    Action<T>和Func<T>委托 泛型Action<T>委托和Func<T>委托是系统定义的两个泛型委托. Action<T>委托表示 ...

  3. C#委托Action、Action<T>、Func<T>、Predicate<T>

    CLR环境中给我们内置了几个常用委托Action. Action<T>.Func<T>.Predicate<T>,一般我们要用到委托的时候,尽量不要自己再定义一 个 ...

  4. .NET中的Action及Func泛型委托

    委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基 ...

  5. 使用.NET中的Action及Func泛型委托

          委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调 ...

  6. 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)

    一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托. 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下. p ...

  7. C# 笔记 Func<TResult> 委托、Action<T> 委托

    https://blog.csdn.net/wanglui1990/article/details/79303894 Func<ΤResult> 委托:代理(delegate)一个返回类型 ...

  8. [转]C#委托Action、Action<T>、Func<T>、Predicate<T>

    CLR环境中给我们内置了几个常用委托Action. Action<T>.Func<T>.Predicate<T>,一般我们要用到委托的时候,尽量不要自己再定义一 个 ...

  9. c# Action,Func,Predicate委托

    System命名空间下已经预先定义好了三中泛型委托,Action,Func和Predicate,这样我们在编程的时候,就不必要自己去定义这些委托了 Action是没有返回值的 Func是带返回值的 不 ...

随机推荐

  1. python 之 列表常用 操作

  2. c++和cuda混合编程 实现传统神经网络

    直接放代码了... 实现的是x1+x2=y的预测,但梯度下降很慢...233333,gpu运行时间很快!! // // main.cpp // bp // // Created by jzc on 2 ...

  3. 《挑战30天C++入门极限》新手入门:C++中的函数重载

        新手入门:C++中的函数重载 函数重载是用来iostream>  using namespace std;  int test(int a,int b);  float test(flo ...

  4. 贪心算法训练(四)——(HDU1050)Moving Tables

    题目描述 在一个狭窄的走廊里将桌子从一个房间移动到另一个房间,走廊的宽度只能允许一个桌子通过.给出 t,表示有 t 组测试数据,再给出 n,表示要移动 n 个桌子.n 下面有 n 行,每行两个数字,表 ...

  5. 深入浅出MYSQL数据库—思维导图[附下载链接]

    源文件下载地址:https://github.com/JluTiger/schoolRecruit2020

  6. hive 属性随笔记录

    set hive.mapred.mode=strict; //设置hive执行模式,默认为nonstrict(非严格模式),这里设置为严格模式 set hiveconf:hive.cli.print. ...

  7. fluent中截取任意面的数据

    原版视频下载链接: https://pan.baidu.com/s/1c2aE740 密码: mf2i

  8. 右键查看别人网页的js代码为什么会显示乱码

    查看别人网页的js显示乱码 解决方法: 打开浏览器,选择设置,点击更多,选择文字编码为Unicode

  9. Apache的Mesos/Marathon与Google的Kubernets的区别

    Apache的Mesos与Google的Kubernets的区别 – China Hadoophttp://chinahadoop.com/archives/2150 有哪些是Apache Mesos ...

  10. [转][osg]探究osg中的程序设计模式【目录】

    作者:3wwang 原文接连:http://www.3wwang.cn/html/article_104.html 前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模 ...