Java 和 C 中匿名类之间的差异#

Diffrence between anonymous class in Java and C#

提问人:Mateusz Kaleta 提问时间:5/5/2021 最后编辑:Aluan HaddadMateusz Kaleta 更新时间:5/5/2021 访问量:97

问:

我已经学习了 2 张嘴的 C#。在此之前,我正在学习 Java。有人可以解释一下 Java 和 C# 中的匿名类有什么区别吗?

c# 中匿名类的所有定义都包括委托,有人可以详细解释一下什么是区别吗?它们是相同还是只有名称相似?

Java C# 闭包匿名

评论

1赞 Aluan Haddad 5/5/2021
它们几乎没有相似之处和完全不同的用例。当您说“C# 中匿名类的所有定义都包含委托”时,您会误以为 C# 中的匿名类可以包含委托值属性,但这是一个很少使用的功能。当您想要创建具有临时集合属性的中间对象时,它们最有用
1赞 Dave Doknjas 5/5/2021
我认为您假设它们有一些共同点,因为“匿名”一词在 Java 的“匿名内部类”和 C# 的“匿名类型”中都有。正如@AluanHaddad所说,它们是完全不同的。如果匿名内部类实现函数接口,则 Java 的匿名内部类可以对应于 C# 委托 - 否则,对于一般情况,您将在 C# 中使用显式类。
0赞 Caius Jard 5/5/2021
在 C# 中,匿名类型(我们倾向于不称它们为类)本质上是一个纯数据设备 - 它有属性,但没有其他属性,也不是你可以显式定义的东西 - 编译器通过推理为你创建它。在 java 中,匿名类更像是一个普通类,只是你不能选择一个名字或定义一个构造函数。这就像您动态定义的类,以满足对满足特定接口的事物的需求。在 c# 中,我们倾向于使用委托(如果这就是你所说的“包括委托”的意思),但委托不是匿名类型

答: 暂无答案