【问题标题】:Why is assigning events to variables of type delegate possible in C#?为什么在 C# 中可以将事件分配给委托类型的变量?
【发布时间】:2022-11-10 16:15:00
【问题描述】:

在 C# 中创建事件的一种方法如下:

public event DelegateName EventName

在上面的示例中,Delegate 名称的类型为 delegateEventName 的类型为 event。事件需要知道可以附加到它的委托的签名,但它不是同一类型。

在 Microsoft 文档中的 example 中,我遇到了以下内容:

public event PropertyChangedEventHandler PropertyChanged;

稍后,执行以下操作:

PropertyChangedEventHandler handler = PropertyChanged;

这让我非常困惑。如何为PropertyChangedEventHandler 类型的变量分配事件?

我在这里缺少什么吗?

【问题讨论】:

    标签: c# events delegates


    【解决方案1】:

    如何为 PropertyChangedEventHandler 类型的变量分配事件?

    因为这是一个类场事件.您只能分配给它或从中读取在声明类本身内.在其他任何地方,该名称指的是事件而不是字段。

    来自C# standard section 14.8.2

    在包含事件声明的类或结构的程序文本中,某些事件可以像字段一样使用。要以这种方式使用,事件不应是抽象的或外部的,并且不应明确包含 event_accessor_declarations。这样的事件可以在允许字段的任何上下文中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 2022-06-29
      • 2023-03-03
      • 1970-01-01
      • 2020-03-05
      相关资源
      最近更新 更多