using指令究竟做了什么?

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

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

以MyTypes.Dll中的以下定义为例

 namespace MyTypes { class Class1 {} } 

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

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

using指令允许我删除此限定条件

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

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

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

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

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