• 常见泛型委托


    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
  • 相关阅读:
    从浏览器输入URL到页面渲染的过程
    安全分析的几个好的工具网站的使用
    从一次渗透谈到linux如何反弹shell
    python 进行抓包嗅探
    MYSQL的索引和常见函数
    一篇博客搞定redis基础
    新型横向移动工具原理分析、代码分析、优缺点以及检测方案
    Java反序列化漏洞的挖掘、攻击与防御
    关于Memcached反射型DRDoS攻击分析
    spark未授权RCE漏洞
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9849753.html
Copyright © 2020-2023  润新知