C#中的私有类有什么用途?

3

为什么我们要在C#中创建私有类?因为我们知道私有类不能成为基类,也无法从它们派生出类。那么私有类的用途和目的是什么呢?


出于与我们拥有私有成员的相同原因。另外,除了从类派生,我们还可以做什么?哦,没错,我们实例化它们——或者调用它们的静态成员。为什么你的问题忽略了这些对类的使用方式呢? - undefined
3
这个问题可能是(嗯,确实是)一个糟糕的问题,但它并不是“基于主观看法的”,所以关闭投票是虚假的。提问者简单地错误地假设类的唯一目的是从中派生出来,而从不使用它们。超越这个错误,问题只是为什么存在任何类型的私有实体,这是被充分确认的,不是一个看法问题。 - undefined
3个回答

7

私有类(或者私有任何东西)很重要,因为控制范围很重要,这是由于封装的概念所决定的。

如果您正在构建一个带有“私有”(internal)类的库,则您的库可以使用这些类,而使用您的库的任何人甚至都无法看到它们。这可以隐藏您希望隐藏的实现特定细节。

如果您正在构建一个具有私有嵌套类的类,则包含类可以使用这些私有类,而其他人则无法看到它们。同样,您可以使用此功能来隐藏您希望隐藏的实现特定细节。

如果您不隐藏实现特定细节(例如通过将私有或内部类公开),那么更改实现就变得更加困难,因为您不能确定您的库的用户没有在这些类上创建依赖关系。但是,如果它们是非公共的,您可以更改它们、替换它们或删除它们,而不必担心破坏外部依赖关系。


1
如果你正在建立一个包含私有类的库,通常会将这些类定义为internal - undefined
1
如果你正在建立一个包含私有类的库,那是不可能的。你会得到一个CS1527错误。 - undefined

4

私有类只能在嵌套类内部创建,并用于限制访问和仅在此嵌套类内部使用。


3
我认为你的意思是私有类只能作为嵌套类存在,但它们不一定要在嵌套类中。它们只能被外部类使用。 - undefined

3
将代码分成独立的逻辑单元被广泛认为是一种良好的实践。每个单元都有一定数量的相关责任。这使得测试代码更加容易,一旦经过充分测试,这些单元就成为了我们可以使用来创建更复杂模式的构建块。私有类用于创建内部功能的构建块,这些功能不一定要对使用库的其他项目可见。它们也可以实现接口,因此如果您想设置一个工厂来控制类的实例创建,那么它们就很有用——调用者仍然可以通过接口使用类,即使他们看不到类本身的类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接