【发布时间】:2014-08-14 13:48:10
【问题描述】:
在浏览C# Language Specification 5.0 时,我意识到您可以定义extern event。我习惯于为平台调用和本机回调外部方法。我在 .NET 领域工作了 11 年,还没有遇到过这个概念。
-
extern事件与什么互操作? - 它是否提供订阅某些原生事件的能力?
- 你能发起这样的活动吗?
- 它解决了哪些问题在 C# 语言中占有一席之地?
我在规范中搜索了“extern”,发现属性、索引器、构造器、静态构造器、终结器 (!) 甚至运算符 (!) 都可以是 extern。字段不能。 (我还了解到命名空间别名可以是“extern”,但它的含义完全不同。)
编辑:这澄清了事情。所以extern 不适用于事件概念或属性概念,而是适用于组成方法。那是对的吗? COM 事件与DllImport 事件有什么不同吗?
【问题讨论】:
-
这不是“伪”语法,它是由类型库导入工具 Tlbimp.exe 生成的代码。有时手工编写 [ComImport] 声明是可行的,只有在没有可用于组件的类型库时。 extern 修饰符可用于任何作为底层方法实现的声明,以及在发生事件时添加和删除访问器。 C# 编译器只是盲目地假设抖动将能够提供实现。