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
  • 相关阅读:
    ReSharper Tips—GotoImplementation
    Possible multiple enumeration of IEnumerable
    Hello, Razor!
    自话自说——POI使用需要注意一个地方
    css中怎么设置透明度的问题
    记录排查国标直播流播放卡顿的问题
    互联网上做广告的优点
    C#、.Net经典面试题集锦(一)
    什么是MFC
    C/S与B/S 的区别
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9849753.html
Copyright © 2011-2022 走看看