zoukankan      html  css  js  c++  java
  • 常见泛型委托

    1.Action

    Action<>委托可以拥有n个参数(0-16),无返回值。

    class Program
    {
        static void Method1()
        {
            Console.WriteLine("without any parameter");
        }
        static void Method2(int i)
        {
            Console.WriteLine($"the int is {i}");
        }
        static void Method3(string s, double d)
        {
            Console.WriteLine($"the string is {s}, the double is {d}");
        }
        static void Main()
        {
            Action A1 = Method1;
            Action<int> A2 = Method2;
            Action<string, double> A3 = Method3;
            A1();
            A2(1);
            A3("hello", 3.14);
            Console.ReadKey();
        }
    }
    View Code

    输出结果如下:

    without any parameter
    the int is 1
    the string is hello, the double is 3.14

    2.Func

    Func<>委托可以拥有n个参数(1-16),类型参数中的最后一个作为返回值类型。因此类型参数不能为空,至少有一个返回类型。

    class Program
    {
        static int Method1(int i)
        {
            return i * 10;
        }
        static string Method2(int a, double d)
        {
            return (a + d).ToString();
        }
        static void Main()
        {
            Func<int, int> F1 = Method1;
            Func<int, double, string> F2 = Method2;
            Console.WriteLine($"{F1(10)}");
            Console.WriteLine($"{F2(1, 3.14)}");
            Console.ReadKey();
        }
    }
    View Code

    输出结果如下:

    100
    4.14

    3.Predicate

    Predicate<>委托拥有一个参数,其返回值为bool型。

    class Program
    {
        static bool Method(int i)
        {
            return i > 0 ? true : false;
        }
        static void Main()
        {
            Predicate<int> P = Method;
            Console.WriteLine(P(10));
            Console.ReadKey();
        }
    }
    View Code

    输出结果如下:

    True

    通过匿名方法使用Predicate<>,

    class Program
    {
        static void Main()
        {
            var anomynous = new Predicate<int>(delegate (int i) { return i > 0 ? true : false; });
            Console.WriteLine(anomynous(1));
            Console.ReadKey();
        }
    }
    View Code

    输出结果如下:

    True
  • 相关阅读:
    C++指针详解
    C++中#include包含头文件带 .h 和不带 .h 的区别
    #if的使用说明
    非常简单的语音朗读功能
    C#基础笔记(第十一天)
    C#基础笔记(第十天)
    手机管理系统
    编程书籍大集合
    centos 安装多实例数据库
    Python3 网络爬虫(请求库的安装)
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9849753.html
Copyright © 2011-2022 走看看