c# - 为什么我们使用内部类?

标签 c# java inner-classes

我想问你为什么我们需要内部类,为什么要使用它们?
我知道如何使用内部类,但我不知道为什么..

最佳答案

一些内部类是公开公开的(例如 Java 中的 Map.Entry),但这是迄今为止的异常(exception)情况,而不是常态。

内部类基本上是一个实现细节。

例如,Swing 广泛使用事件监听器的内部类。没有它们,您最终会用一堆您不需要看到的类污染全局命名空间(这可能会使它们的目的更难确定)。

本质上,内部类是作用域的一种形式。包访问从包外部隐藏类。私有(private)内部类从该类外部隐藏该类。

Java 中的内部类也是缺少函数指针或方法委托(delegate)(在 C# 中)或闭包的替代品。它们是将一个函数传递给另一个函数的方法。例如,在 Executor 类中你有:

void execute(Runnable r);

所以你可以传入一个方法。在 C/C++ 中可以通过以下方式实现:

void execute(void (*run)());

作为一个指向函数的指针。

关于c# - 为什么我们使用内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707724/

相关文章:

c# - LINQ Datacontext 处理问题

c# - 如何从 C# 中的二进制文件中检索整数值

c# - ReSharper Alt-Enter 在某些项目中不起作用,但在其他项目中起作用

java - Spring:将私有(private)内部类作为外部类的成员注入(inject)?

java - 类变成内部类时Maven编译失败(虽然Eclipse很好)?

c# - C#中的简单for循环

java - 使用 Jackson 序列化对象时如何覆盖类型信息?

java - amchart - 使用相同 X 轴的多个 Y 轴

java - 从 Spring MVC Rest 服务抛出的 Jersey REST 客户端捕获异常

java - 内部类中的构造函数(实现接口(interface))