Namespaces 将代码组织成逻辑组并防止命名冲突(像类型的文件夹)。using directives 导入命名空间,使您可以用短名称引用其类型。它们一起构造 C# 代码并访问庞大的 .NET 库。
声明命名空间
;
{ }
{
{ }
}
命名空间在一个名称下对相关类型进行分组(MyApp.Services.UserService),防止不同命名空间中同名类之间的冲突。文件作用域命名空间(C# 10)减少嵌套。
using System; // import → use Console instead of System.Console
using System.Collections.Generic; // → List<T>, Dictionary<K,V>
using System.Linq; // → LINQ extension methods
using MyApp.Services; // your own namespaces
Console.WriteLine("hi"); // short name works thanks to `using System;`
var list = new List<int>(); // thanks to the Generic using
文件顶部的 using 导入一个命名空间,使其类型可用于短名称(而不是完全限定名称)。您通过这种方式导入所需的 .NET 库。
using Project = MyApp.Models.Project; // ALIAS — resolve a name conflict or shorten
// GLOBAL using (C# 10) — apply to the ENTIRE project, declared once
global using System;
global using System.Collections.Generic;
// → no need to repeat common usings in every file (often auto-generated)
Global usings(C# 10)为整个项目声明一次导入 — 现代 .NET 自动包含常见的(ImplicitUsings),所以您很少再写 using System; 了。
using var file = File.OpenText("x.txt"); // using STATEMENT — auto-disposes (different feature!)
命名空间和 using 指令是组织 C# 代码和访问 .NET 生态系统的基础,因此理解它们是必要的日常知识。Namespaces 将类型组织到逻辑组中(镜像文件夹结构)并防止命名冲突 — 没有它们,您的类会相互冲突,也会与庞大的 .NET 库和第三方包冲突。using directives 是您访问该库的方式:导入命名空间,使您可以用短名称而非完全限定名称来使用其类型(Console、List<T>、LINQ 方法) — 每个 C# 文件都依赖 using 来访问框架功能。
知道如何声明命名空间(包括现代文件作用域语法)、使用 using 导入、使用别名解决冲突以及利用全局 using(C# 10,为整个项目声明一次常见导入 — 现在通常通过 ImplicitUsings 自动生成,所以您很少写样板 using)对于组织项目和使用框架是必要的。
理解命名空间和 using — 代码组织、冲突防止、访问 .NET 库,以及减少样板代码的现代全局/隐式 using — 是任何 C# 开发的基础,因为每个程序都将代码组织到命名空间中并通过 using 访问功能。(值得与 using 语句 区分,这是用于自动资源释放的不同特性。)