是否有必要将命名空间作为c#中文件的名称?

时间:2016-02-14 14:01:52

标签: c#

例如,我将我的文件(控制台应用程序)命名为“Hello”,所以我必须编写命名空间Hello吗?如果没有,添加命名空间的目的是什么?

2 个答案:

答案 0 :(得分:7)

不,命名空间可以是任何东西,它们不必与文件名相同。最好将命名空间与物理文件路径(解决方案中的文件夹)对应。

因此,如果您在.\Interfaces\ViewModels\Client中有一个文件,那么该文件中的名称空间声明通常是:

namespace DefaultNamespaceOfAssembly.Interfaces.ViewModels.Client { ... }

ReSharper甚至提供修复违反此规则的命名空间。

namespace的目的是

  • 通过将属于一起的东西(例如功能)放在同一名称空间中来模块化您的代码,

  • 减少名称冲突。没有命名空间导入外部库会导致地狱,如果它包含与您自己的代码中的类同名的类。

可能还有更多,但一开始以为这些都会浮现在脑海中,尽管这两个应该已经足以证明他们的存在。

答案 1 :(得分:4)

  

我命名我的文件(控制台应用程序)' Hello',所以我必须写命名空间Hello吗?

不,你可以随意命名。

如果您正在编写要由其他代码使用的库,并且该库是该命名空间中唯一(或主要)类型的源,那么用户可以方便地使用DLL来命名基于命名空间,因为他们可以很容易地记住UsefulTypes.CoolStuff类都来自UsefulTypes.CoolStuff.dll程序集。没有规则你必须这样做,如果你这样做会很方便。

对于应用程序来说,这并不是有用的;最终用户不关心您使用的命名空间,也可能不知道命名空间是什么。如果应用程序是.Net开发人员的工具,那么它可能很有用,但不是。

  

如果不是,添加命名空间的目的是什么?

究竟是什么意思;它是一个名字的空间。通过将类,枚举,委托和结构的名称放入命名空间,它们与在其他命名空间中使用的同名的其他情况分开。你不必确保你使用的库没有同名的东西,除非你真的要使用同名的东西。

在编写应用程序时,它会阻止其他程序集中的内容。在编写库时,它更为重要,因为它也可以让你的东西远离其他人。