为什么C#using指令被称为“a”;指令;什么时候不影响编译过程?
问题 为什么C#在不影响编译过程的情况下被称为指令 术语指令和预处理器指令()之间有区别吗 这个问题是关于术语的 精化 有一个,有一个。我说的是这里的天气 维基百科说,这些是编译器的指令,它们改变了编译过程 这个Stackoverflow表示C#using指令不会以任何方式改变编译过程为什么C#using指令被称为“a”;指令;什么时候不影响编译过程?,c#,using-directives,C#,Using Directives,问题 为什么C#在不影响编译过程的情况下被称为指令 术语指令和预处理器指令()之间有区别吗 这个问题是关于术语的 精化 有一个,有一个。我说的是这里的天气 维基百科说,这些是编译器的指令,它们改变了编译过程 这个Stackoverflow表示C#using指令不会以任何方式改变编译过程 因此,如果using指令没有改变编译过程,为什么它仍然被称为指令?您链接到的答案表明,删除未使用的using指令不会影响编译输出 using指令列出了允许编译器在生成的代码中隐式引用的名称空间。如果没有该指令,则
因此,如果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(); }