委托 delegate

来源:互联网 发布:mac excel solver 编辑:程序博客网 时间:2024/05/19 03:18

 说到委托,两个要点就足够了:相同返回类型、相同参数列表

委托是一种存储函数引用的类型。

1.声明:委托的声明指定了一个返回类型和一个参数列表,他和函数声明的区别就在于不带函数体。

2.初始化委托变量:把委托变量初始化为与委托具有相同返回类型和参数列表的函数引用,之后就可以使用委托变量调用这个函数,就像该变量是一个函数一样。

我们可以把委托变量作为参数传递给一个函数,这样,该函数就可以使用委托 调用他引用的  任何函数。

 delegate关键字指定该定义是用于委托的,接着指定double返回类型和两个double参数。委托名称是weituo

class Program

    {
        delegate double weituo(double a, double b);//这一句是声明委托,我们发现,他的返回值类型与参数列表和后便给出的两个方法是一致的。
        static void Main(string[] args)
        {
            weituo WT;//首先用委托类型声明一个变量
            Console.WriteLine("请输入两个数,用\",\"隔开");
            string input = Console.ReadLine();
            int commapos = input.IndexOf(',');
            double a = Convert.ToDouble(input.Substring(0, commapos));
            double b = Convert.ToDouble(input.Substring(commapos + 1, input.Length - 1-commapos ));
            Console.WriteLine("请输入要进行的计算");
            string c=Console.ReadLine();
            if (c == "M") 
            {
                WT = new weituo(multiply);//把一个函数引用赋给委托变量
            }
            else
            {
                WT = new weituo(divide);
            }
            Console.WriteLine("{0}",WT (a,b));
            Console.ReadKey();
        }

      /// <summary>
        /// 乘法运算
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
 

 public static double multiply(double a,double b)

    {
        return a * b;
    }

        /// <summary>
        /// 除法运算
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>

 public static double divide(double a, double b)

        {
            return a / b;
        }
    }
0 0
原创粉丝点击