zoukankan      html  css  js  c++  java
  • delegate--委托

    delegate--委托  (可以把委托看成用来执行方法的一个东西)

    eg:

    namespace delegateTest
    {
    delegate double MathsOp(double x);
    class Program
    {
    public class MyDelegate
    {
    public static double MultiplyBy2(double x)
    {
    return x * 2;
    }
    }

    [STAThread]//[STAThread] attribute指示应用程序的 COM 线程模型是单线程单元 若为多线程单元则是 [MTAThread]

    static void Main(string[] args)
    {
    MathsOp operation = new MathsOp(MyDelegate.MultiplyBy2);

    double x = 1.23;

    double result = operation(x);

    Console.WriteLine("{0}multiply by 2 is {1}", x, result);

    Console.Read();

    }
    }
    }

      

    多路广播委托
       前面使用的委托只包含一个方法调用。调用委托的次数与调用方法的次数相同。
    如果要调用多个方法,就需要多次显示调用这个委托。其实委托也可以包含多个方法,
    这种委托就是多路广播委托。我们可以通过+=来向委托添加调用方法,
    也可以用-=删除其中的调用方法。如:

    namespace delegateTest
    {
    public class MyDelegate
    {
    public static void MultiplyBy2(double value)
    {
    double result = value * 2;
    Console.WriteLine("Multiplying by 2 :{0}gives{1}", value, result);
    }
    public static void Squre(double value)
    {
    double result = value * value;
    Console.WriteLine("Squaring:{0}gives{1}", value, result);
    }
    }
    delegate void MathsOp(double x);

    class Program
    {
    [STAThread]
    static void Main(string[] args)
    {

    //MyDelegate.MultiplyBy2作为函数参数
    MathsOp operation = new MathsOp(MyDelegate.MultiplyBy2);
    operation += new MathsOp(MyDelegate.Squre);
    double x = 1.23;
    operation(x);

    operation -= new MathsOp(MyDelegate.MultiplyBy2);
    operation(x);
    }
    }
    }

    为什么要用委托
      使用委托使程序员可以将方法引用封装在委托对象内。
    然后可以将该委托对象传递给可调用所引用方法的代码,
    而不必在编译时知道将调用哪个方法。
    与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。
    我爱学习,学习使我快乐。
  • 相关阅读:
    1.3计算机网络体系结构及OSI七层参考模型与TCP/IP参考模型
    1.2计算机网络性能指标
    1.1数据交换——电路、报文、分组交换
    一、计算机网络概述
    计算机网络随笔序言及索引
    CCF-CSP历年试题详解(不断更新中)
    【python】序列
    算法课-母函数专题
    算法课-大数专题
    算法课-暴力搜索
  • 原文地址:https://www.cnblogs.com/kerven/p/6523467.html
Copyright © 2011-2022 走看看