using指令究竟做了什么?

时间:2010-10-21 20:47:25

标签: c# namespaces using-directives

在MSDN上,我可以阅读它的功能,但我想知道它在技术上做了什么(告诉编译器在哪里寻找类型......)?我的意思是用作指令。

4 个答案:

答案 0 :(得分:8)

using指令的主要功能是使命名空间中的类型可用,而无需限定用户代码。它考虑在引用的程序集和正在编译的项目中定义的名称空间和类型集。

以MyTypes.Dll

中的以下定义为例
namespace MyTypes {
  class Class1 {}
}

现在考虑从具有不同命名空间的另一个项目引用MyTypes.dll。如果没有using指令来创建Class1,我需要限定名称

MyTypes.Class1 local1 = new MyTypes.Class1();

using指令允许我删除此资格

using MyTypes;
...
Class1 local1 = new Class1();

答案 1 :(得分:2)

@ JaredPar的答案是正确的,但是我想补充说它与Java中的import的工作方式不同。 (有人纠正我,如果我错了Java import实际上将它导入内存)

您需要包含DLL或项目引用,以便甚至可以使用using,但是在实际调用程序集中的方法/属性/某些内容之前,它不会加载到内存中。所以你可以拥有using System.Linq;,但是如果你实际上没有使用任何Linq方法,那么Linq程序集永远不会被加载。 (我不是100%肯定Linq在它自己的物理组件中,因为名称空间和程序集不是1:1,但为了示例我假设它是)

答案 2 :(得分:0)

using通知编译器哪些名称空间要搜索文件中使用但未在文件中定义的名称。

答案 3 :(得分:0)

使用告诉编译器转到程序集的配置文件并搜索具有给定名称的特定DLL,如果找到DLL,则将该dll链接到当前项目。 using只是一个链接操作,让DLL在内存的共享空间中相互通信。 这下面的人是对的