命名空间是否必须是 C# 中文件的名称

本文关键字:文件 中文 是否 命名空间 | 更新日期: 2023-09-27 18:34:41

例如,我将我的文件(控制台应用程序(命名为"Hello",那么我必须编写命名空间Hello吗?如果不是,添加命名空间的目的是什么?

命名空间是否必须是 C# 中文件的名称

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

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

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

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

namespace的目的是

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

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

可能还有更多,但乍一看想到了这些,尽管这两个应该已经足以证明它们的存在。

我将我的文件(控制台应用程序(命名为"Hello",所以我必须编写命名空间 Hello?

不,你可以随心所欲地命名它。

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

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

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

正如它所说的那样;这是一个名字的空间。通过将类、枚举、委托和结构的名称放入命名空间中,它们与其他命名空间中使用的同名其他情况分开。您不必确保您使用的任何库都没有具有相同名称的内容,除非您实际上打算使用该具有相同名称的内容。

在编写应用程序时,它会将其他程序集的内容挡在外。在编写库时,它甚至更为重要,因为它还可以让你的东西远离其他人。