zoukankan      html  css  js  c++  java
  • C#学习笔记(委托)

    委托的定义

      委托(delegate)是一种可以把引用存储为函数的类型。这听起来相当的棘手,但是机制是非常简单的。委托的声明非常类似于函数,但是不带函数体,且要使用delegate关键字。委托的声明指定了一个返回类型和一个参数列表。

      在定义了委托后,就可以声明该委托类型的变量。直接把这个变量初始化为与委托相同返回类型和参数列表的函数引用。之后,就可以使用委托变量调用这个函数,就像该变量是一个函数一样。

      有了引用函数的变量之后,还可以执行不能用其他方式完成的操作。例如,可以把委托变量作为参数传递给一个函数,这样,该函数就可以使用委托调用他引用的任何函数,而且在运行之前无需知道调用的是哪个函数。

    下面给出一个示例:

    class program

    {

      delegate double processDelegate(double param1,double param2);

      static double Multiply(double param1,double param2)

      {

        return param1*param2;

      }

      static double Divide(double param1,double param2)

      {

        return param1/param2;

      }

      static void Main(string[] args)

      {

        processDelegate process;

        Console.WriteLine("Enter 2 number separated with a comma:");

        string input = Console.ReadLine();

        int commaPos = input.IndexOf(',');

        double param1 = Convert.ToDouble(input.Substring(0,commaPos));

        double param2 = Convert.ToDouble(input.SubString(commaPos + 1,input.length - commaPos -1));

        Console.WriteLine("Enter M to multiply or to divide:");

        input = Console.ReadLine();

        if(input == "M")

        {

          process = new processDelegate(Multiply);

        }

        else

        {

          process = new processDelegate(Divide);

        }

        Console.WriteLine("Result:{0}",process(param1,param2));

        Console.ReadKey();

      }

    }

  • 相关阅读:
    非线性滤波:中值滤波;双边滤波
    线性滤波:方框滤波、均值滤波、高斯滤波
    输入输出XML和YAML文件
    图像对比度、亮度值调整
    opencv图像混合,分离颜色通道、多通道图像混合
    访问图像的三种方法
    Opencv
    INSERT增加数据记录
    MySQL 语言大全
    text
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4466886.html
Copyright © 2011-2022 走看看