先声明一个委托:
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是什么?
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是什么?
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。
从运行情况下,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!"