熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

嵌套類中是否可以觸發外部類中定義的事件

2022-06-13   來源: .NET編程 

  大家都知道只有在定義事件的類中才能觸發事件

  今天看到一個資料上說就是在定義事件的類的嵌套類中也不能觸發事件!為了搞清楚原因我進行了如下測試

  class Program
    {
        static void Main(string[] args)
        {
            MyClassTest t = new MyClassTest();
            tFunc();          
        }
    }

  public class MyClass
    {    
        public delegate void MyEventHandler(object senderEventArgs e);
        public event MyEventHandler MyEvent;
        public class Test
        {
            public void Func()
            {
                MyClass a = new MyClass();
                object o = new object();
                EventArgs e = new EventArgs();
              
                aMyEvent(o e);  //在嵌套類中嘗試觸發事件編譯可以通過運行時候卻拋出NullReferenceException異常
            }
        }      
 

  }

  熟悉NET底層原理的人都知道事件成員在編譯的時候實際是生成一個私有的委托字段和兩個方法(一個add_MyEvent方法負責向委托鏈添加委托的實例還有一個remove_MyEvent方法作用剛好相反)
 

  按照常規的想法是能夠通過嵌套類來訪問外部類的私有成員的也就是說在嵌套類中應該是可以觸發外部類定義的事件的

  真是汗顏啊!無地自容了在這裡向大家道歉!

  昨天的代碼忘記訂閱事件了!太低級了啊!

  結論嵌套類中應該是可以觸發外部類定義的事件的!

  感謝大家參與討論!上面的文章已經更正!謝謝大家啊!


From:http://tw.wingwit.com/Article/program/net/201311/13430.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.