委托的写法

 

 

 

using System;

namespace weituo
{
    class Program
    {



        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Console.WriteLine("写法一!");
            func1();
            Console.WriteLine();

            Console.WriteLine("写法二!");
            func2();
            Console.WriteLine();

            Console.WriteLine("写法三!");
            func3();
            Console.WriteLine();






        }


        #region 委托的方法


        #region 写法一,需要写出专门委托的函数,需要自定义委托



        /// <summary>
        /// //委托声明 -- 定义一个签名: 支持多个输入参数
        /// </summary>
        /// <param name="In_1"></param>
        /// <param name="In_2"></param>
        /// <param name="In_3"></param>
        /// <returns></returns>
        delegate double MathAction(double In_1, double In_2, double In_3);


        //执行委托的方法
        static void func1()
        {
            MathAction ma = Double;
            Console.WriteLine(ma(1, 2, 3));
        }

        //委托执行的函数,最多支持16个输入参数
        static double Double(double In_1, double In_2, double In_3)
        {
            return In_1 * In_2 * In_3 * 2;
        }



        #endregion

        #region 写法二,需要写出专门委托的函数,不需要自定义委托(使用系统委托)


        //执行委托的方法
        static void func2()
        {
            //最后一个是输出类型,最多支持16个输入类型
            Func<double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double> func = Double16;
            Console.WriteLine(func(4.5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 1));

        }

        //委托执行的函数,最多支持16个输入参数
        static double Double16(double In_1, double In_2, double In_3, double In_4, double In_5, double In_6, double In_7, double In_8, double In_9, double In_10, double In_11, double In_12, double In_13, double In_14, double In_15, double In_16)
        {
            return In_1 * In_2 * In_3 * 2;
        }

        #endregion

        #region 写法三,不需要写出专门委托的函数,不需要自定义委托

        static Func<double, double, double, double> result = (In_1, In_2, In_3) => In_1 * In_2 * In_3 * 2;

        static Func<double, double, double, double> result4 = (In_1, In_2, In_3) =>
        {
            var ddd = In_1 * 2;
            ddd = In_2 * ddd;
            ddd = In_3 * ddd;
            return ddd;
        };

        static void func3()
        {
            //*写法三,不需要写出专门委托的函数,还需要自定义委托 * */
     

            Console.WriteLine(result(4.5, 2, 2));

             
            Console.WriteLine(result4(4.5, 2, 2));

        }

        #endregion

        #endregion
    }
}

  

posted @ 2022-02-08 15:00  人生为卒  阅读(27)  评论(0编辑  收藏  举报