zoukankan      html  css  js  c++  java
  • C# Delegate类

    Delegate作用
    Delegate(托付、委托)类,通过它可 引用 静态方法或引用实例的方法。
    一般用于事件和处理的方法关联

    Delegate基本写法:
    ① 声明Delegate。 写法: 访问修饰符 delegate 返回值类型 自定义方法名(参数类型 参数,......); 注意参数要和调用方法的参数对应起来。
    ② 编写引发Delegate的函数
    ③ 编写Delegate操作的方法。
    ④ 使用


    例子
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace DelegateDemo
    {
        class Class1
        {
            delegate double processDelegate(double db1, double db2);
            static double Multiply(double db1, double db2)
            {
                return db1 * db2;
            }
            static double Divide(double db1, double db2)
            {
                return db1 / db2;
            }
            static void NamedMethod(string strInput,double dbNum1,double dbNum2)
            {
                processDelegate process;           
                if (strInput == "M")
                    process = new processDelegate(Multiply);
                else
                    process = new processDelegate(Divide);
                Console.WriteLine("结果为:{0}", process(dbNum1, dbNum2));
    
            }
            static void AnonymousMethod(string strInput, double dbNum1, double dbNum2)
            {
                processDelegate process;
                if (strInput == "M")
                    process = delegate(double db1, double db2){return db1 * db2;};
                else
                    process = delegate(double db1, double db2) { return db1 / db2; };
                Console.WriteLine("结果为:{0}", process(dbNum1, dbNum2));
    
            }
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                //
                // TODO: 在此处添加代码以启动应用程序
                Console.WriteLine("请输入两个小数,用逗号分割");
                string strInput = Console.ReadLine();
                int commmaPos = strInput.IndexOf(',');
                double dbNum1 = Convert.ToDouble(strInput.Substring(0, commmaPos));
                double dbNum2 = Convert.ToDouble(strInput.Substring(commmaPos + 1));
                Console.WriteLine("输入M表示乘法,或者D表示除法");
                strInput = (Console.ReadLine()).ToUpper();
                //使用命名方法
                Console.WriteLine("使用命名方法委托");
                NamedMethod(strInput,dbNum1,dbNum2);  
                //使用匿名方法
                Console.WriteLine("使用匿名方法委托");
                AnonymousMethod(strInput, dbNum1, dbNum2);  
    
            }
        }
    
    }
  • 相关阅读:
    5个经典的javascript面试问题
    去年的一些面试题
    各种奇妙的hack
    jQuery工作原理解析以及源代码示例
    JavaScript Window
    原生JavaScript技巧大收集(1~10)
    蜘蛛爬虫类程序抓取有防盗链的网站处理 php和wget命令简单破解防盗链网站的功能
    Git SSH Key 生成步骤
    linux下ssh使用rsa认证教程
    linux FTP服务器 VSFTP配置手册
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/2727803.html
Copyright © 2011-2022 走看看