关于Event的疑惑

booirror 2016-12-09 03:35:59

说是event 只能用+=,-=操作符,但我用=操作符也没有报错啊,运行也正确。

是什么原因
...全文
188 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 楼主 booirror 的回复:
说是event 只能用+=,-=操作符,但我用=操作符也没有报错啊,运行也正确。 是什么原因
谁知道你是怎么写的?
Forty2 2016-12-10
  • 打赏
  • 举报
回复
引用 2 楼 booirror 的回复:
[quote=引用 1 楼 Forty2 的回复:] 在定义事件的类里面,你可以用等号(比如方便于初始化)。 但在类外面,你就只能用+=和-=了。
event变量的IL代码是private访问级别,为什么在类外能访问??[/quote] 类外并不能访问private的内部event变量(Delegate)。你可以把它比拟为类外不可以用等号。 类外只能访问even提供的add和remove方法(编译器自动生成),也就是+=和-=。
private EventHandler myDelegate;
public event EventHandler My
{
    add { myDelegate += value; }  // 示例代码,不考虑线程安全
    remove { myDelegate -= value; } // 示例代码
}
john_QQ:2335298917 2016-12-10
  • 打赏
  • 举报
回复
事件就是一个命名委托,要给这个委托赋值,用=也可以
秋的红果实 2016-12-09
  • 打赏
  • 举报
回复
+=表示触发该事件时,可以添加多个方法,你要是只有一个方法,等效于=
booirror 2016-12-09
  • 打赏
  • 举报
回复
引用 1 楼 Forty2 的回复:
在定义事件的类里面,你可以用等号(比如方便于初始化)。 但在类外面,你就只能用+=和-=了。
event变量的IL代码是private访问级别,为什么在类外能访问??
Forty2 2016-12-09
  • 打赏
  • 举报
回复
在定义事件的类里面,你可以用等号(比如方便于初始化)。 但在类外面,你就只能用+=和-=了。

110,556

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧