C#中语句"to qualify the use of a type in that namespace"是什么意思

What does the statement "to qualify the use of a type in that namespace" mean in C#

我是 C# 初学者,在使用 Console.WriteLine 函数时遇到以下错误。

The name 'Console' does not exist in the current context

我对 using 关键字的理解是它的作用类似于 JavaScript 中的 requireimport

然后我在名称空间文件的顶部添加了语句 using System;,因为 IDE 的建议给了我类似 System.Console 的内容。现在我没有错误了。

出于好奇,我查看了 using Directive 部分中的 C# 文档。 并且有如下状态:

using指令有3种用途:

允许在命名空间中使用类型,这样您就不必限定在该命名空间中使用类型:

这部分是什么意思 - 这样您就不必限定该名称空间中类型的使用: 是什么意思。

以及为什么 using 关键字被称为指令,或者与我在 Angular 中使用的指令相比,一般编程中的指令是什么?

谢谢。

What does the part - so that you do not have to qualify the use of a type in that namespace: mean?

System 命名空间中有一个静态 class Math。您可以像这样引用它的静态方法 Min 而无需任何 using:

var z = System.Math.Min( x, y );

或者您可以通过 using System 命名空间删除 System.

using System;
[...]
var z = Math.Min( x, y );

或者您甚至可以去掉 Math.(自 C# 6 起):

using static System.Math;
[...]
var z = Min( x, y );

第三个选项基本上允许您将静态 classes 视为名称空间。

What does the part - so that you do not have to qualify the use of a type in that namespace: mean.

C# 区分 简单名称 ,后者具有名称和可选的类型参数,如 StringList<int>,以及 限定名称 有多个名称,用点分隔,如 System.StringSystem.Collections.Generic.List<int>.

当您有 using 指令时,您可以省略使用的限定符。

And why the using keyword is called a directive or what is a directive in general programming

在 C# 中,我们有 声明,例如 namespace Fooclass Barvoid M() {} 我们有 声明,比如 foreach(var foo in bar) blah(); 那么 using System; 是什么?这不是声明;未宣布 没有新项目。它不是 语句 -- 语句是控制流元素,但 using 指令不引入控制流。它 指示 编译器具有解析名称的特定规则,因此它是一个 指令 .

所有这些信息都在 C# 规范中。 我强烈建议您自己获取一份规范,并在遇到此类问题时查阅。这比在此处发布问题对您来说更快更容易。