zoukankan      html  css  js  c++  java
  • C#编程.函数.委托

    注:委托最重要的用途最讲到事件和事件处理时才能说清,这里先简单介绍一下关于委托的一些内容

    委托是一种可以把引用存储为函数的类型。这听起来相当棘手,但其机制是非常简单的。

    1)委托的声明非常类似与函数,但不带函数体,且要使用delegate关键字。委托的声明指定了一个返回类型和一个参数列表。

    2)再定义了委托之后,就可以声明发委托类型的变量。接着把这个变量初始化为与委托有相同返回类型和参数列表的函数的引用。

    3)之后,就可以使用委托变量调用这个函数,就想该变量是一个函数一样。

    示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestDelegate
    {
        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 numbers 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 D 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();
            }
        }
    }
    

    执行代码,结果如图所示:


  • 相关阅读:
    云开发数据库 Firebase Firestore 零基础入门视频实战教程(7 个视频)
    在 2021 年你需要掌握的 7 种关于 JavaScript 的数组方法
    2021 年写 JavaScript 代码的 17 个优化技巧
    Redis 学习笔记系列文章之 Redis 的安装与配置 (一)
    selenium webdriver 删除元素
    FFT板子
    pytest一:运行几个简单的测试用例终端显示的信息
    JS 日期取年月日
    将博客搬至CSDN
    c语言编译器
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271187.html
Copyright © 2011-2022 走看看