zoukankan      html  css  js  c++  java
  • 在嵌套类中是否可以触发外部类中定义的事件!

    大家都知道,只有在定义事件的类中才能触发事件。

    今天看到一个资料上说就是在定义事件的类的嵌套类中也不能触发事件!为了搞清楚原因,我进行了如下测试:

     class Program
        {
            static void Main(string[] args)
            {
                MyClass.Test t = new MyClass.Test();
                t.Func();          
            }
        }

        public class MyClass
        {    
            public delegate void MyEventHandler(object sender,EventArgs e);
            public event MyEventHandler MyEvent;
            public class Test
            {
                public void Func()
                {
                    MyClass a = new MyClass();
                    object o = new object();
                    EventArgs e = new EventArgs();
                   
                    a.MyEvent(o, e);  //在嵌套类中尝试触发事件,编译可以通过,运行时候却抛出NullReferenceException异常
                }
            }      

        }

    熟悉.NET底层原理的人都知道,事件成员在编译的时候实际是生成一个私有的委托字段和两个方法(一个add_MyEvent方法,负责向委托链添加委托的实例,还有一个remove_MyEvent方法,作用刚好相反);

    按照常规的想法,是能够通过嵌套类来访问外部类的私有成员的,也就是说在嵌套类中应该是可以触发外部类定义的事件的。

    真是汗颜啊!无地自容了,在这里向大家道歉!

    昨天的代码忘记订阅事件了!太低级了啊!

    结论:嵌套类中应该是可以触发外部类定义的事件的!

    感谢大家参与讨论!上面的文章已经更正!谢谢大家啊!


  • 相关阅读:
    Webpack2 那些路径
    Nginx alias 和 root配置
    前端代码监控
    Class和构造函数的异同
    Async和await
    如何在git中删除指定的文件和目录
    微信小程序数字转化条形码和二维码
    vue 结合swiper插件实现广告公告上下滚动的效果
    vue2.0 结合better-scroll 实现下拉加载
    FormData对象提交表单和form提交表单
  • 原文地址:https://www.cnblogs.com/xuefeng1982/p/1393208.html
Copyright © 2011-2022 走看看