不使用C#名称空间有什么危险?

use*_*313 3 c# namespaces

我已经向自己证明了编译和运行应用程序不需要命名空间.但是,不使用命名空间有哪些危险和陷阱?它创建了我试图避免的层.

我知道你在尖叫,但敏捷和抽象怎么样,所以在代码和对象之间存在20层抽象.我不是在问它是否违反了这个月或那个敏捷的东西.通过不使用命名空间来实现真实世界的问题是什么?

编辑:

创建一个独立的类dll,这样在类项目中就不会发生冲突.当我将其包含在必须使用完全限定名称的其他项目中时,试图避免.myNamespace.myClass MyClass = new myNamespace.myClass();

从评论看来,命名冲突是最大的问题.

猜猜我应该使用一个使用声明并加速...

Eri*_*ert 8

命名空间有两个主要用途:

首先,它们使代码的使用者能够更容易地理解,查找和正确使用您的代码.系统诊断工具位于System.Diagnostics命名空间中是有原因的.这样客户就可以知道其中的内容.

其次,它们是防止名称冲突的机制.

第一个实际上到目前为止更重要.冲突并不在于普遍.尽管如此,它们是可能的,明智地使用命名空间可以防止它们.

如果您不关心客户查找,理解和使用您的代码,并且您没有命名冲突,那么请确保跳过使用命名空间.


Ree*_*sey 5

它创建了我试图避免的层.

没有创建真正的额外"图层".命名空间纯粹允许组织类型的方式,并有助于防止命名冲突,因为项目变大并且使用了更多的库.

就运行时而言,没有名称空间 - 所有类型都是完全限定的,而C#中的名称空间只是更改了类型名称.关闭命名空间只会使您的类型名称更容易与其他名称冲突,但如果您在项目中不多次使用相同的名称,则对代码是否有效没有"实际影响",或者使用与引用的程序集中的类型名称相同的名称并通过其导入using.


编辑以回应评论:

"创建图层"的意思是,当我创建对象时,我必须将名称空间添加为图层.(即myNamespace.myClass MyClass = new myNamespace.myClass();)"

请注意,仅当您没有using myNamespace;语句或在项目中使用多个名称空间时才需要这样做.如果您始终在项目的默认命名空间内工作,则无需限定名称.