zoukankan      html  css  js  c++  java
  • C# event 和delegate的区别

    其实说实话 event和delegate 并没有什么特别大的区别,event其实就是特殊化的delegate

    1.调用上event只能+=和-=,这样做的意义是为了防止,其余的方法覆盖,但是delegate并没有这种限制,不仅可以+=,-=,还可以直接=一个方法。

    2.委托定义的是一个类型,而事件定义的是一个成员

    3.event 只能在类内定义,或者接口内定义,而delegate可以在类外类外定义,但不能在接口内,因为接口中只能包含成员

    4.event能在接口中定义意味着,我们可以通过接口来获得event,这对于没有引用关系的两个项目来说是十分合适的

    委托使用例子(类A订阅类B):

    namespace WindowsFormsApplication1
    {
        public delegate void SumDelegate(); //定义一个委托类型的SumDelegate
    
        public class A
        {
        
            public A()
            {
                B b = new B();
                b.sum += method;
            }
    
            public void method()
            {
                MessageBox.Show("我被调用了");
            }
        }
    
    
        public class B
        {
            public SumDelegate sum;   //定义一个委托方法sum
            public void ShowMsg()
            {
                sum();
            }
        }
    }


    
    
    
    
    
    
    
                
    
  • 相关阅读:
    上下文管理器
    创建项目与介绍(2)
    虚拟环境的安装(1)
    爬虫-selenium(14-2)扩展
    爬虫10-1(协程)
    Python3笔记038
    Python3笔记037
    Python3笔记036
    Python3笔记035
    Python3笔记034
  • 原文地址:https://www.cnblogs.com/kevinWu7/p/10163526.html
Copyright © 2011-2022 走看看