



























2010-06-07 07:48 kenty06 阅读(419) 评论() 收藏 举报
我们都知道,命名空间是为了减少不同的公司开发的类之间可能有同名的现象,以及组织类的一种方法。但是编译器对命名空间是怎么看的呢?
对于编译器来讲,它根本不知道命名空间为何物,例如下面这个简单的程序。
System.IO.FileInfo fi = new System.IO.FileInfo("");
System.Net.WebClient client = new System.Net.WebClient();
我们使用完全的名称来定义两个类。当然,微软为了我们能省点时间,给我们提供了using语法。
using System.IO;
using System.Net;
FileInfo fi = new FileInfo("");
WebClient client = new WebClient();
可是对于编译器来讲,他是不知道命名空间的,编译的时候,他就会根据类名,去程序集本身以及引用的程序集里面去找相应的类,如果没有找到,就会在类前面加上System.IO,再找,还没有,就会加上System.Net去找,这样就会找到相对于的类了。
所以对于那些两个命名空间里面有相同的类的时候,编译器就会提示出错,因为这样他是找不到的,所以编译就不能通过了。
例如对于 Timer 类,在命名空间,System.Threading,以及System.Timers都存在,如果有using这两个,那么Timer t = new Timer();就会出错,而如果是按照自动提示定义类,IDE就会根据using的顺序自动帮你加上命名空间,
using System.Timers;
using System.Threading;
Timer t = new System.Timers.Timer();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。