创建命名空间 - >类 - >嵌套类?要么

Dem*_*tic 0 c# namespaces class nested-class

我正在阅读有关创建类和嵌套类的内容,以确定哪种方法适合我的需求,但我找不到类似于我需要的东西(或者无法理解它;)).

我会给你们一个(几乎)真实的例子:

假设我拥有一家生产各种车辆的工厂.所以,我的命名空间就是Factory我的身材.

现在,让我们说工厂制造汽车,船只和飞机.所以我将Factory使用这些名称为我的命名空间添加三个类.

这是我理解其他方法的问题所在:

我在三种类型的车辆之间有一些共同点.例如,它们都有一个引擎(可能是不同的HP或我理解的形状是引擎的属性,但它们都有引擎).此外,汽车和飞机有门(有时船也有).另一方面,它们也有一些独特的东西(例如飞机有螺旋桨可能有不同的尺寸或形状).

有人可以描述一下我在代码中所说的内容,以便了解它们之间的区别吗?

Eri*_*ert 7

你的问题有点模糊.我会回答两个相关的问题,而不是试着回答它.

命名空间的目的是什么?

命名空间的主要目的是将类型声明组织到层次结构中,以便用户可以轻松找到它们.

命名空间的第二个目的是提供消除名称冲突歧义的机制.也就是说,如果XYZ公司有型车辆和美国广播公司有一个类型的车辆,以及PQR公司希望在同一时间使用代码XYZ和ABC的PQR程序员需要一种方法来告诉编译器哪种类型的"车",实际上是指.

您建议命名您的命名空间"Factory".这可能是一个坏主意.工厂可能是一个类,而不是命名空间.工厂是一种东西,而不是组织事物的方式.我倾向于将我的命名空间命名为"Dementic.Manufacturing"并让它包含一个Factory类.现在,事情的组织方式有两种:第一种是由公司Dementic Incorporated生产代码,以及与代码相关的,即制造.并且您的任何竞争对手都不可能创建名为Dementic.Manufacturing的命名空间.

我应该何时制作嵌套类型而不是顶级类型?

当嵌套类型是外部类型的实现细节时,创建嵌套类型.尽管偶尔会这样做,但通常认为制作公共嵌套类型是一种不好的做法.

一个常见的例子是枚举器类; 它通常是可枚举集合的私有实现细节.