【问题标题】:Routed event syntax [duplicate]路由事件语法 [重复]
【发布时间】:2013-12-19 07:11:00
【问题描述】:

我有一个关于路由事件的问题,我在一些文档中看到,当我们定义自己的自定义事件时,我们使用以下代码添加和删除处理程序:

public event RoutedEventHandler CustomClick
{
    add { AddHandler(CustomClickEvent, value); }

    remove { RemoveHandler(CustomClickEvent, value); }
}

但我的意思是,这既不像构造函数语法,也不像属性初始化语法!它也不是属性获取/设置语法(尽管它看起来类似于)。我已阅读详细的 C# 文档,但我看不出这是什么构造。仅在有关自定义 RoutedEvents 的文档中,我看到了此代码,但在普通的 C# 教程/入门中,我从未看到这是一种合法的语言结构。有人可以向我解释一下吗?或者给我一个很好的文档来解释这个?

提前致谢。

【问题讨论】:

标签: c# routed-events


【解决方案1】:

它们是“事件访问器”。它们是属性语法的事件等价物。它们允许您公开一个事件并更改它的工作方式......而不会破坏封装类合同(如属性)。

请看这里的解释:http://msdn.microsoft.com/en-us/library/bb882534.aspx

【讨论】:

  • 感谢您的帮助。我看到了链接。这只是VS2013的新功能吗?还是在旧版本中也可用(C# 4 或 C# 3)?
  • 我相信从 .NET 2.0 开始可用。
【解决方案2】:

这是为events in C# 保留的语法,另请参阅here。引用:

add contextual 关键字用于定义自定义事件访问器,当客户端代码订阅您的事件时调用该访问器。如果您提供自定义添加访问器,则还必须提供删除访问器。

【讨论】:

  • 好的,所以这意味着'add'关键字与'+='操作符相同,用于订阅事件的方法?同样,“删除”对应于“-=”(取消订阅)运算符...对吗?
  • add 指定当有人使用+= 时要做什么。顺便说一句,它至少从 VS2008 开始可用。 This answer 更详细地讨论事件。
猜你喜欢
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
相关资源
最近更新 更多