全局命名空间和默认命名空间之间有什么区别(如果有)?

What is the difference, if any, between the global namespace and the default namespace?

提问人:Ammar 提问时间:9/25/2022 最后编辑:Ammar 更新时间:9/25/2022 访问量:222

问:

与命名空间相关的名称的多样性以一种我需要进一步澄清的方式交叉在一起。

默认命名空间、基本命名空间、未命名命名空间、根命名空间和全局命名空间都是命名空间的示例。

所有这些都可以互换使用,因此很难遵循。

我想出了一个猜测(如果我错了,请纠正我):

  1. 默认命名空间(也称为基本命名空间)的概念与 Visual Studio 相关。当 VS 创建新类时,它将自动包装在默认命名空间中。这只是为了节省开发人员的时间。

  2. 另一方面,全局命名空间(也称为未命名命名空间或根命名空间)主要是一个 C# 概念。它是没有括号的类型和命名空间的容器。

谢谢。

更新 1:出现这些术语的地方

enter image description here

编译器添加默认命名空间。此未命名的命名空间(有时称为全局命名空间)存在于每个文件中。它包含声明的命名空间中未包含的声明。全局命名空间中的任何标识符都可用于命名命名空间。 [1]

全局命名空间是“根”命名空间:global::System 将始终引用 .NET System 命名空间。[2]

C# .NET 命名空间

评论

2赞 Sweeper 9/25/2022
在您提到的与“命名空间”相关的所有术语中,C# 规范中仅定义了“全局命名空间”。你在哪里看到这些其他术语?
0赞 Ammar 9/25/2022
@Sweeper -- 是的,我在这个问题中添加了额外的资源。
0赞 Sweeper 9/25/2022
“基本命名空间”和“根命名空间”呢?
0赞 9/25/2022
RootNamespace是项目 csproj 文件中的一个设置,我认为它等效于 RootNamespaceAttribute,并且 Visual Studio 的项目配置 UI 将其称为“默认命名空间”

答: 暂无答案