Java和C#在内部/本地/匿名类方面的根本区别是什么?

Java和C#在内部/本地/匿名类方面的根本区别是什么?,c#,java,class,C#,Java,Class,Java和C#在内部/本地/匿名类方面的基本区别是什么 C#没有Java内部类的等价物——它只有嵌套类型(类似于Java的“静态”嵌套类) 访问规则略有不同——在Java中,外部类可以访问其嵌套类的私有成员,反之亦然。在C#中,嵌套类可以访问外部类的私有成员,但不能反过来访问 C#没有像Java那样的匿名内部类,但它有匿名方法和lambda表达式,这是一种更干净的方法,可以实现匿名内部类通常用于的大部分功能。这两种机制的变量捕获是不同的-有关更多详细信息,请参阅。在我看来,最大的区别在于它们(j

Java和C#在内部/本地/匿名类方面的基本区别是什么

C#没有Java内部类的等价物——它只有嵌套类型(类似于Java的“静态”嵌套类)

访问规则略有不同——在Java中,外部类可以访问其嵌套类的私有成员,反之亦然。在C#中,嵌套类可以访问外部类的私有成员,但不能反过来访问


C#没有像Java那样的匿名内部类,但它有匿名方法和lambda表达式,这是一种更干净的方法,可以实现匿名内部类通常用于的大部分功能。这两种机制的变量捕获是不同的-有关更多详细信息,请参阅。

在我看来,最大的区别在于它们(java中的匿名类与C#中的匿名方法)如何处理捕获。在java中,它捕获变量的当前(然后将原始值和捕获的值隔离)。在C#中,您捕获变量本身。这是一把双刃剑,可能会导致问题,但如果正确使用,它的威力会令人难以置信。

复制和许多其他内容。这不是复制品。请看标题。它问的是具体的区别。我将编辑这个问题以使其更清楚。我几乎不认为这符合“完全重复”的条件。对于dup,我不太确定-对我来说,这是一个非常具体的问题。如果它关闭,我会投票支持《重新开放》……这是这些问题的一个子集,这些问题的答案充满了涵盖不同语言差异的资源。这不是一个精确的复制品,但它证明了萨沙在提出问题之前没有努力自己去寻找。