zoukankan      html  css  js  c++  java
  • Action<T>和Func<T>委托事例

    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 = 0;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*2;
            public static double Squre(double value)=>value*value;
        }
    }
  • 相关阅读:
    计算机网络中的码元的理解
    屏幕扩展,屏幕相对位置的设置
    wireshark使用入门
    Http下载文件的登录验证
    正则-连续相同的单词
    文件系统和数据库索引用B树而不是红黑树的原因
    红黑树的突破点
    Win 10 Revit 2019 安装过程,亲自踩的一遍坑,有你想要的细节
    Java拦截器的实现原理
    根据进程数,资源数判断是否发生死锁
  • 原文地址:https://www.cnblogs.com/singhwong/p/11959522.html
Copyright © 2011-2022 走看看