有人可以解释事件如何提供访问委托(delegate)的封装吗?除了不能使用赋值 =
运算符,而只能使用 +=
和 的事实之外-=
。我不明白的部分是:
public delegate void CarEngineHandler(string msgForCaller);
public CarEngineHandler listOfHandlers;
如果这是public
,那么我们可以这样做listOfHandlers.invoke("hello");
。我明白了,但是事件如何提供封装?
public events CarEngineHandler listOfHandlers;
listOfHandlers("hello"); //fire the event
不是随时触发事件并调用委托(delegate)吗?封装在哪里?
最佳答案
事件
只能由提供它们的类触发。您可以订阅某个类的公共(public)事件,但无法从其他类触发该事件。
参见MSDN关于事件。
关于c# - C#提供事件封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15486096/