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);  
    
            }
        }
    
    }
  • 相关阅读:
    软件开发与uml的关系
    软件工程助教学期工作总结
    2021-06-06 助教一周小结(第十八周)
    2021-05-23 助教一周小结(第十六周)
    2021-05-16 助教一周小结(第十五周)
    2021-05-09 助教一周小结(第十四周)
    第十三周助教总结(2021.4.26-2021.5.2)
    第十二周助教总结(2021.4.19-2021.4.25)
    第十一周助教总结(2021.4.12-2021.4.18)
    第十周助教总结(2021.4.5-2021.4.11)
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/2727803.html
Copyright © 2011-2022 走看看