先声明一个委托:
public delegate void MessageHandler(string messageText)
在Connect类中声明下面这个:
public event MessageHandler MessageArrived
委托调用的方法是:
public class Display
{
         public void DisplayMessage(string message)
         {Console.WriteLine("Message arrived: {0}", message);}
}
在主类中先注明了这个
Connection myConnection = new Connection();//初始化
         Display myDisplay = new Display();
 myConnection.MessageArrived +=
         new MessageHandler (myDisplay.DisplayMessage);
在主类中事件中调用
         if ( MessageArrived != null )
         { MessageArrived("Hello Mum!"); }
这里MessageArrived != null 怎么理解?
从运行情况下,MessageArrived != null 为true!这个怎么理解?
初始化Connection这个类的时候MessageArrived 是null,
调用 myConnection.MessageArrived +=
         new MessageHandler (myDisplay.DisplayMessage);后,
MessageArrived 这个时候还是null吗?
myConnection.MessageArrived +=
         new MessageHandler (myDisplay.DisplayMessage)是按什么步骤算的?
上面整个过程只指出现过MessageArrived("Hello Mum!"); 
那么new MessageHandler (myDisplay.DisplayMessage)调用public delegate void MessageHandler(string messageText)中的messageText是什么?

解决方案 »

  1.   

    调用 myConnection.MessageArrived +=
             new MessageHandler (myDisplay.DisplayMessage);后,
    MessageArrived 这个时候还是null吗?
    ======================
    MessageArrived有值了,这个"值"就是:myDisplay.DisplayMessage,所以不是null;
    myConnection.MessageArrived +=
             new MessageHandler (myDisplay.DisplayMessage)是按什么步骤算的?
    ============================
    "+="注册事件运算符,可以简单地理解给委托变量MessageArrived赋值为myDisplay.DisplayMessage
    上面整个过程只指出现过MessageArrived("Hello Mum!"); 
    那么new MessageHandler (myDisplay.DisplayMessage)调用public delegate void MessageHandler(string messageText)中的messageText是什么?
    =======================
    就是"Hello Mum!"; 因为MessageArrived已经被赋值为myDisplay.DisplayMessage,所以MessageArrived("Hello Mum!")相当于调用了myDisplay.DisplayMessage("Hello Mum!"),所以形参messageText的值为"Hello Mum!"
      

  2.   

    1。
    下次能不能分条列出啊?2。
    从运行情况下,MessageArrived != null 为true!这个怎么理解?
    =========
    委托不为空3。
    初始化Connection这个类的时候MessageArrived 是null,
    调用 myConnection.MessageArrived +=
    new MessageHandler (myDisplay.DisplayMessage);后,
    MessageArrived 这个时候还是null吗?
    =========
    不是!
    (上面2你自己不都说了迈?)4。
    myConnection.MessageArrived +=
    new MessageHandler (myDisplay.DisplayMessage)是按什么步骤算的?
    =======
    次问题不明白5。
    上面整个过程只指出现过MessageArrived("Hello Mum!"); 
    那么new MessageHandler (myDisplay.DisplayMessage)调用public delegate void MessageHandler(string messageText)中的messageText是什么?
    ============
    当然是 "Hello Mum!"