C# 多文件编译时,如何进行空间的引用(using)?
(2011-08-10 09:55:12)
标签:
杂谈 |
分类: C#.net学习 |
为了更深入的了解命名空间,我做了下面的几个测试:
写了两个文件,一个是CodeFile1.cs 一个是Program.cs,分别如下:
CodeFile1.cs:
using System;
namespace H1
{
}
}
}
}
Program.cs:
using System;
class Test
按F7编译后,没有问题,如果删除using H1,会报错,说找不到H1_c这个类,这个给了我们一个启示:
★在多文件编译时,如果想引入某个类,只需要使用“using”关键字包含这个类的空间。
下面进一步探讨。
对于上述的两个文件,作如下的更改:
CodeFile1.cs:
using System;
namespace H1
{
}
}
Program.cs:
using System;
using H1;
//using
H1.H2;//应该加上这句,否则报错
class Test
还是按F7进行编译,发现会报错,原因在于空间引得不对。这里出现了一种情况,空间中还有空间,H1空间中还有空间H2,在Program.cs中,仅仅用using H1将H1包含,找不到H2_c,此时应该再加一句:
using H1.H2;
所以,对于上面的结论,应该改为,
★在多文件编译时,如果想引入某个类,应当使用“using”关键字包含这个类所在空间的绝对地址。
这也就能解释在编程的过程中,为什么包含了System,还需包含System.Collections,因为要包含这个类所在空间的绝对的地址,如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
这下面做更深一步的探讨,依旧重新写这两个文件:
CodeFile1.cs:
using System;
namespace H1
{
}
Program.cs:
using System;
namespace H1
{
}
按F7编译通过了,在这里,并没有使用using H1的方式,而是写了同样的一个命名空间,会自动的引入类。
这说明:
分散在不同的源文件中的类,如果有相同的命名空间,可以直接引入。
下面进行总结:
★在多文件编译时,如果想引入某个类,应当使用“using”关键字包含这个类所在空间的绝对地址。
★分散在不同的源文件中的类,如果有相同的命名空间,可以直接引入。
命名空间,提供了一种组织相关类的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在一个命名空间中,可以嵌套其他的命名空间,为类型创建层次结构。命名空间与程序集无关,同一个程序集可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。
C#的源代码都以using System 开头,这是因为Microsoft提供的许多有用的类都包含在System命名空间中。
下面是一些常见的命名空间以及它们的作用:
System
System.Coolections
System.Data
System.diagnostics
System.Drawing
System.IO
System.Reflection
System.reflection.Emit
System.Text
System.Text.RegularExpressions包含了提供访问.NET框架正则表达引擎的类
System.Timer
System.Web
System.Web.Services
System.Web.UI
System.Windows.Forms
System.XML