您现在的位置是:首页 >

触发角没有反应 嵌套类中是否可以触发外部类中定义的事件

火烧 2023-03-28 11:54:52 1073
嵌套类中是否可以触发外部类中定义的事件   大家都知道 只有在定义事件的类中才能触发事件   今天看到一个资料上说就是在定义事件的类的嵌套类中也不能触发事件!为了搞清楚原因 我进行了如下测试   cl
触发角没有反应 嵌套类中是否可以触发外部类中定义的事件

嵌套类中是否可以触发外部类中定义的事件  

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

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

  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方法 作用刚好相反)  

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

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

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

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

lishixinzhi/Article/program/net/201311/13430  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码