• Action 和 Func


    Func<T, TResult> 委托:有一个传入参数T,返回类型为TResult的委托。

    Func<T1, T2, TResult> 委托:有两个传入参数:T1T2,返回类型为TResult

    Func<T1, T2,...,Tn, TResult> 委托:有n传入参数:T1至Tn,返回类型为TResult

    Func都是有返回类型的,如果我们的方法没有返回类型该怎么办呢?这时Action就要闪亮登场了。

    匿名方法:

    Func<int, int, int> func = delegate(int m, int n)
    {
        return m + n;
    };
    int sum = func(1, 3);
    Console.WriteLine(sum);

    lambda 表达式

    Func<int, int, int> func = (m, n) => m + n;
    int sum = func(1, 3);
    Console.WriteLine(sum);

    Action 委托:没有传入参数,也没有返回类型,即Void。

    Action<T> 委托:传入参数为T,没有返回类型。

    Action<T1, T2> 委托:两个传入参数,分别为T1T2,没有返回类型。

    匿名方法:

    Action<int, int> action = delegate(int m, int n) // 无参 直接delegate
    {
        Console.WriteLine(m + n);
    };
    action(1, 3);

    Lambda表达式:

    Action<int, int> action = (m, n) => Console.WriteLine(m + n);
    action(1, 3);

    例子:

    class ActionFuncCls
        {
            private static void Add(int m, int n)
            {
                Console.WriteLine(m + n);
            }
    
            /// <summary>
            /// Action委托
            /// </summary>
            public static void CallAction()
            {
                ///@无参
                //Action action = () => Console.WriteLine("abc");
                //action();
    
                //@方法一
                //Action<int, int> action = new Action<int,int>(Add);
                //action(1, 3);
    
                //@方法二
                //Action<int, int> action = delegate(int m, int n) // 无参 直接delegate
                //{
                //    Console.WriteLine(m + n);
                //};
                //action(1, 3);
    
                //@方法三
                //Action<int, int> action = (int m, int n) => Console.WriteLine(m + n);
                Action<int, int> action = (m, n) => Console.WriteLine(m + n);
                action(1, 3);
            }
    
            /// <summary>
            /// Func 委托
            /// </summary>
            public static void CallFunc()
            {
                ///@无参
                //Func<int> func = () => 5;
                //int sum = func();
                //Console.WriteLine(sum);
    
                //@方法一
                //Func<int, int, int> func = new Func<int, int, int>(Add);
                //int sum = func(1, 3);
                //Console.WriteLine(sum);
    
                //@方法二
                //Func<int, int, int> func = delegate(int m, int n)
                //{
                //    return m + n;
                //};
                //int sum = func(1, 3);
                //Console.WriteLine(sum);
    
                //@方法三
                Func<int, int, int> func = (int m, int n) => m + n;
                //Func<int, int, int> func = (m, n) => m + n;
                int sum = func(1, 3);
                Console.WriteLine(sum);
            }
        }
  • 相关阅读:
    Spring IOC
    MyBatis环境搭建
    Spring AOP
    DWR在Spring中应用
    利用反射自动封装成实体对象
    Spring源码下载
    You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
    由于未能创建 Microsoft Visual C# 2010 编译器,因此未能打开项目 "xxx" ”的解决方法
    正则表达式
    安卓模拟器里面的cpu/abi里面有AMD、intel x86、mlps应该选择哪个
  • 原文地址:https://www.cnblogs.com/valor-xh/p/5940596.html
Copyright © 2020-2023  润新知