zoukankan      html  css  js  c++  java
  • C# 委托和事件的区别

    主要区别:1.事件在类外绑定事件只能用“+=”(“-=”解绑),不能使用‘=’绑定;如果在类内部绑定事件可以用‘=’;  

         2.委托在类内类外都可以用"+="、"-="、"=";

         3.事件的调用(执行)只能在类内调用;委托(公有)在类内类外都可以调用

    例子:

    class A
    {
      public delegate void FunHandleEvent();
      public FunHandleEvent funHandleEvent;

      public event FunHandleEvent FunEvent;

      public A() {

        //通过事件绑定方法
        FunEvent = FunA;
      }

      //调用事件

      public void Fun()
      {
        if (FunEvent != null)
        {
          FunEvent();
        }
      }

      private void FunA()
      {
        Console.WriteLine("FUNA");
      }

    }

    class B
    {
      public B() { }

      public B(A a)
      {

                //A类外绑定方法
        a.FunEvent += FunB;
      }

      private void FunB()
      {
        Console.WriteLine("FUNB");
      }


      public void FunC()
      {
        Console.WriteLine("FUNC");
      }

    }

    main:

    static void Main(string[] args)
    {
      A a = new A();
      B b = new B(a);

      //事件只能在类内部调用,而委托可以在类外调用
      //事件在类外部绑用+= -=,不能用=,在内部可以用=;
      a.FunEvent += b.FunC;
      a.Fun();//通过方法间接调用事件

      a.funHandleEvent = b.FunC;//通过委托绑定方法
      a.funHandleEvent();//直接调用委托


      Console.ReadKey();
    }

  • 相关阅读:
    python yield 理解
    创建loop设备
    git 添加submodule 以及更名
    用了linux 这么久,终于发现一个需要硬连接的地方
    gdb 查看内存
    att 汇编 helloworld
    ln 创建连接和mount -bind用法
    区间DP
    数位DP
    VS反汇编分析
  • 原文地址:https://www.cnblogs.com/darkif/p/10072093.html
Copyright © 2011-2022 走看看