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();
    }

  • 相关阅读:
    关于modelsim的波形文件(vsim.wlf)(转自http://www.eefocus.com/ican/blog/1010/196941_ebbde.html)
    c++ 头文件 再学习
    c++头文件和#include 学习笔记
    C++中嵌入汇编(vs)
    cocos2dx plist使用
    OpenGL 前凑
    别人的经验和自己现在的疑惑
    C++ 枚举类型
    cocos2dx draw & update
    const对象分析
  • 原文地址:https://www.cnblogs.com/darkif/p/10072093.html
Copyright © 2011-2022 走看看