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

  • 相关阅读:
    TableExport导出失败问题
    gitlab备份、恢复、升级
    读书笔记一【加密——替换法】
    读书笔记一【加密——换位法】
    解决Kettle ETL数据乱码
    SQL中exsit和in
    Centos下搭建邮件服务器
    2018总结及2019计划
    mac安装gcc
    Vue.js学习 Item11 – 组件与组件间的通信
  • 原文地址:https://www.cnblogs.com/darkif/p/10072093.html
Copyright © 2011-2022 走看看