c#入门-事件

事件

委托作为字段使用时,需要有专门的访问器。不能是属性。
因为一旦被别人拿到了get访问器,它就可以在任何时候以任何次数调用委托。
一旦别人拿到了set访问器,别人就可以无限制地把已有地委托设置为null。

事件就是委托的专属访问器。
在委托字段前加event修饰可以是委托变成事件。
在定义事件的类中,他是正常的委托。但是出了这个类,就只能存在于+=或–=前面。

由于–=必须拿到原值才能生效,也就是说外人除非也有权限拿到原值,否则无法解绑别人绑定的委托。
c#入门-事件_第1张图片

事件访问器

如果事件需要处理多个委托,或进行更细致的设置,可以为事件添加add访问器和remove访问器。
添加访问器后,事件就仅仅是事件了,在自己类里也不会被当作委托。

class Foo
{
	Func<int, int> func;
	public event Func<int, int> Func
	{
		add => func += value;
		remove => func -= value;
	}
}

c#入门-事件_第2张图片

你可能感兴趣的:(#,进阶部分,c#)