在C#中声明事件的语法是什么?
在我的课程中,我想声明一个其他类可以订阅的事件。 声明事件的正确方法是什么?
这不起作用:
public event CollectMapsReportingComplete;
你忘了提这个类型 。 对于非常简单的事件, EventHandler
可能就足够了:
public event EventHandler CollectMapsReportingComplete;
有时您需要声明自己的委托类型以用于事件,允许您使用EventArgs
参数的自定义类型(请参阅Adam Robinson的注释):
public delegate void CollectEventHandler(object source, MapEventArgs args); public class MapEventArgs : EventArgs { public IEnumerable
您还可以使用通用的EventHandler
类型,而不是声明自己的类型:
public event EventHandler CollectMapsReportingComplete;
您需要指定事件的委托类型:
public event Action CollectMapsReportingComplete;
这里我使用了System.Action
但你可以使用你想要的任何委托类型(甚至是自定义委托)。 您指定的委托类型的实例将用作事件的支持字段。
一个例子
/// /// Event triggered when a search is entered in any /// public event EventHandler SearchEntered { add { searchevent += value; } remove { searchevent -= value; } } private event EventHandler searchevent;
public event EventHandler MyEvent;
公共事件[DelegateType] [EventName];