我以为我理解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
当你说“他们正在使用,如果你不希望调用的方法,而不是直接的自定义实现左的地方做”,你让我觉得你可能无法完全理解上的差异简单的委托和事件之间。这里简单的解释,但这里有一个简单的解释...
代表是一种让代码使用你的代码来提供他们自己的方法的人的方式。因此,他们不会通过消息泵并同步发生等。
事件使用委托为您提供一种方法,让您将自己的代码放入以响应事件。当有事情需要回应时,事件会通过消息泵进行处理,并且适用于其他地方可能发生的情况。但是,它们会发生在当前正在执行的代码的执行路径之外。令人高兴的是,大多数人似乎都是通过直觉得到什么时候使用其中的一种或其他。再一次,在这里大大简化,但希望有足够的进一步阅读。