为什么C#使用指令被称为“;指令“;当它不影响编译过程时

本文关键字:指令 影响 编译 过程 被称为 为什么 | 更新日期: 2023-09-27 17:49:47

问题

当C#使用指令不影响编译过程时,为什么它被称为指令

术语指令预处理器指令

这个问题是关于术语的。

精化

有一个using指令,也有一个正在使用的语句。我在这里说的是使用指令。

维基百科说,指令是编译器的指令,它改变了编译过程。

这个Stackoverflow的回答表明C#使用指令不会以任何方式改变编译过程。

那么,如果using指令没有改变编译过程,为什么它仍然被称为指令呢?

为什么C#使用指令被称为“;指令“;当它不影响编译过程时

您链接到的答案表明,删除未使用的using指令不会影响编译输出

using指令列出了允许编译器在生成的代码中隐式引用的命名空间。如果没有该指令,您必须完全限定所有名称,因此:

using System.Diagnostics;
...
var x = new Process();

而不是

var x = new System.Diagnostics.Process();

因此,它是一个真正的指令,因为它改变了编译器解释代码的方式。

预处理器指令用于在编译源代码之前更改源代码。C#中的预处理器指令非常有限。与C/C++不同的是,在编译源代码之前,您可以完全重写源代码。在C#中,您可以打开和关闭代码块,并更改一些编译器标志。据我所知,它们并不像C/C++那样在单独的阶段中应用。

为了完整性,using语句是语法糖,变成

using (var x = new IDisposable()) {}

(其中var x =是可选的(

进入

var x = new IDisposable();
try{ ... } 
finally { x.Dispose(); }