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();

      }

    }

  • 相关阅读:
    (七)mysql 记录长度
    (六)列类型
    (五)校对集
    (四)中文数据问题
    Spring Boot Jpa 的使用
    Spring Boot:如何优雅的使用 Mybatis
    Spring Boot:定时任务
    Spring Boot 小技巧
    【重磅】Spring Boot 2.0权威发布
    Spring Boot + Jpa + Thymeleaf 增删改查示例
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4466886.html
Copyright © 2011-2022 走看看