为什么C#使用指令被称为“;指令“;当它不影响编译过程时
本文关键字:指令 影响 编译 过程 被称为 为什么 | 更新日期: 2023-09-27 17:49:47
问题
当C#使用指令不影响编译过程时,为什么它被称为指令?
术语指令和预处理器指令 这个问题是关于术语的。 精化 有一个using指令,也有一个正在使用的语句。我在这里说的是使用指令。 维基百科说,指令是编译器的指令,它改变了编译过程。 这个Stackoverflow的回答表明C#使用指令不会以任何方式改变编译过程。 那么,如果using指令没有改变编译过程,为什么它仍然被称为指令呢?
您链接到的答案表明,删除未使用的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(); }