c# - C#提供事件封装?

标签 c# events

有人可以解释事件如何提供访问委托(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/

相关文章:

c# - 如何将接口(interface)作为参数传递给方法?

c# - 使用 NHibernate CreateSQLQuery 方法执行 UPDATE 并返回刚刚更新的记录?

jquery - 在 iframe 中加载动态 url

javascript - Google Maps API v3 JavaScript 事件问题

javascript - 在自定义事件上允许 "Find Usages"的 IDE?

.net - 类库应该如何向用户/UI 呈现通知?

python - Python Threading.Event半忙等待更好的解决方案

c# - 如何将 bool 公式转换为 CNF 或 DNF

c# - Roslyn 源生成器能否发现 IDE 的间距/等首选项?

c# - 不同解决方案中的共享项目使 Visual Studio 编译器失败 (C#)