除使用指令外,允许在命名空间外使用哪些代码

What code is allowed outside namespace except using directives

提问人:Manak 提问时间:4/27/2023 更新时间:4/28/2023 访问量:45

问:

在命名空间体外使用指令是常见的做法,但是在命名空间体外可以完成哪些其他代码。

C# 范围 命名空间

评论

3赞 gunr2171 4/27/2023
为什么?您遇到问题了吗?这是否与较新 C# 版本的顶级语句功能有关?
0赞 MakePeaceGreatAgain 4/27/2023
请参阅 learn.microsoft.com/dotnet/csharp/whats-new/tutorials/...,了解顶级语句
0赞 Narish 4/27/2023
命名空间“用于声明包含一组相关对象的作用域”。因此,从逻辑上讲,如果命名空间定义了对象的作用域,并且我们知道 C#(和其他一些 OOP 语言)中的所有内容都与对象相关联 ->那么就没有有效的代码可以在命名空间之外。必须声明命名空间才能使对象具有作用域,而类和对象是我们编写代码的地方。顶级语句只是为你做肮脏的工作
2赞 MakePeaceGreatAgain 4/27/2023
这个问题的目的到底是什么?SO 不是一个学习语言系统的网站,因此您应该阅读相应的文档。您是否有特定问题,例如代码中的编译器错误?请随意在此处添加相关代码和您得到的错误。

答:

4赞 Olivier Jacot-Descombes 4/27/2023 #1

命名空间是可选的。如果省略它,则类型将分配给全局命名空间。因此,允许在命名空间之外使用顶级允许的每种代码。

// No namespace declaration here
public class MyClass()
{
}

您可以显式指定此命名空间,如下所示:

var c = new global::MyClass();

文档说:

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

请参阅:学习 / .NET / C# 指南 / 语言参考 / 关键字 / 命名空间