gpt4 book ai didi

java - 在 C# 中,我们可以想象在不编写委托(delegate)的情况下编写我们自己的事件吗?

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:27 25 4
gpt4 key购买 nike

我学习了Java中的面向对象。现在在 C# 中开发。这意味着我从未真正理解委托(delegate)的功能,但我知道如何使用它们。

最近我发现了这个页面 http://java.sun.com/docs/white/delegates.html .

如果 Java 能够在没有委托(delegate)的情况下创建事件,是否可以在 C# 中做同样的事情?我们可以想象在不编写任何委托(delegate)的情况下编写我们自己的事件吗?

(问题已经用法语提出 here )

最佳答案

是的,您可以使用单一方法接口(interface)而不是委托(delegate)。您还需要在添加/删除和调用方面实现委托(delegate)的多播性质。让单个类实现多播并同时实现Invoke是很困难的。但是,由于接口(interface)具有不同数量和类型的参数,因此以类型安全的方式。你当然可以有一堆:Multicast<T> , Multicast<T1, T2>等等(同一个类可能也会处理异步执行。)

另一个麻烦是每个类只能实现一次接口(interface),即使您想要多个不同的处理程序也是如此 - 因此您会有很多嵌套类。

关于委托(delegate),没有什么特别神奇的 - 它们只是一个非常有用的抽象,加上 lambda 表达式、匿名方法和表达式树的语法糖,它们甚至更好。 p>

关于java - 在 C# 中,我们可以想象在不编写委托(delegate)的情况下编写我们自己的事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com