我以爲我理解C#中的事件。如果您不想直接調用方法而不是自定義實現的剩餘位置,有時會使用它們。但當?訂閱兒童班的活動?
程序員A寫入類A,程序員B寫入類B.類A應該引發一個事件,即類B的寄存器並作出反應,但類A不知道類B用於提供的函數的任何內容。
您能否給我提供一個簡單的例子?
我以爲我理解C#中的事件。如果您不想直接調用方法而不是自定義實現的剩餘位置,有時會使用它們。但當?訂閱兒童班的活動?
程序員A寫入類A,程序員B寫入類B.類A應該引發一個事件,即類B的寄存器並作出反應,但類A不知道類B用於提供的函數的任何內容。
您能否給我提供一個簡單的例子?
public class A
{
private readonly B _B = new B();
public class A()
{
_B.MyEvent += MyEventHandler;
}
private void MyEventHandler(object sender, EventArgs e)
{
// Handle
}
}
public class B
{
public event EventHandler MyEvent;
// Call this when you raise the event so you don't
// need check if MyEvent is null.
private void OnMyEvent()
{
if (MyEvent != null) // If this is null we have no subscribers.
{
MyEvent(this, EventArgs.Empty);
}
}
}
這是非常基本的,並得到了重點。
http://msdn.microsoft.com/en-us/library/aa645739(VS.71).aspx
當你說「他們正在使用,如果你不希望調用的方法,而不是直接的自定義實現左的地方做」,你讓我覺得你可能無法完全理解上的差異簡單的委託和事件之間。這裏簡單的解釋,但這裏有一個簡單的解釋...
代表是一種讓代碼使用你的代碼來提供他們自己的方法的人的方式。因此,他們不會通過消息泵並同步發生等。
事件使用委託爲您提供一種方法,讓您將自己的代碼放入以響應事件。當有事情需要回應時,事件會通過消息泵進行處理,並且適用於其他地方可能發生的情況。但是,它們會發生在當前正在執行的代碼的執行路徑之外。令人高興的是,大多數人似乎都是通過直覺得到什麼時候使用其中的一種或其他。再一次,在這裏大大簡化,但希望有足夠的進一步閱讀。