2010-10-21 44 views
6

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

回答

8

using指令的主要功能是使命名空间内的类型不受用户代码限制。它考虑在引用程序集中定义的名称空间和类型集以及正在编译的项目。

就拿在MyTypes.Dll

namespace MyTypes { 
    class Class1 {} 
} 

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

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

using指令让我删除这个资格

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

另外,如果在应用程序命名空间中找不到类型,编译器将通过使用包含的命名空间进行搜索,对吗? – Loj 2010-10-21 20:57:45

+1

@Mojmi的常见情况是。名称查询实际上非常复杂,我特别没有评论它究竟是如何工作的,因为我很有可能会错失有趣的细节。 – JaredPar 2010-10-21 21:00:30

0

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

2

@ JaredPar的答案是正确的,但我想补充一点,并不完全像Java中的import一样工作。 (有人纠正我,如果我错了有关Java的import实际上将它导入到内存)

您需要包括以甚至能够使用using无论是DLL或项目的参考,但是它没有加载到内存中,直到你真正调用程序集中的方法/属性/东西。所以你可以有using System.Linq;但是如果你实际上没有使用任何Linq方法,Linq程序集永远不会被加载。 (我不是100%肯定Linq是自己的物理组件,因为命名空间和程序集不是1:1,但为了举例我假设它是)

0

使用只是告诉编译器去到程序集的配置文件,然后用给定的名称搜索一个特定的DLL,如果找到了DLL,那么它将该dll链接到当前项目中。使用只是一个链接操作,让DLL在内存中的共享空间中相互交谈。 这里下面的人是正确的