在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 Maps { get; set; } } 

您还可以使用通用的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];