Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么C#using指令被称为“a”;指令;什么时候不影响编译过程?_C#_Using Directives - Fatal编程技术网

为什么C#using指令被称为“a”;指令;什么时候不影响编译过程?

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

问题

为什么C#在不影响编译过程的情况下被称为指令

术语指令预处理器指令()之间有区别吗

这个问题是关于术语的

精化

有一个,有一个。我说的是这里的天气

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

这个Stackoverflow表示C#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(); }