• 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++中的函数指针不同,委托是面向对象,而且是类型安全的。
    我爱学习,学习使我快乐。
  • 相关阅读:
    源码分析shiro认证授权流程
    shiro功能模块
    Java NIO(New I/O)的三个属性position、limit、capacity
    阻塞和非阻塞,同步和异步 总结
    小白科普:Netty有什么用?
    【异常】SSM整合quartz之org.quartz.impl.JobDetailImpl----ClassNotFoundException
    笔记本键盘字母按出来的都是快捷键
    eclipse egit提交方法
    oracle批量insert
    CAS Client 3.2.1 配置详解
  • 原文地址:https://www.cnblogs.com/kerven/p/6523467.html
Copyright © 2020-2023  润新知