加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 多文件编译时,如何进行空间的引用(using)?

(2011-08-10 09:55:12)
标签:

杂谈

分类: C#.net学习

为了更深入的了解命名空间,我做了下面的几个测试:

写了两个文件,一个是CodeFile1.cs 一个是Program.cs,分别如下:

CodeFile1.cs:

using System;
namespace H1
{
    class H1_c
    {
        public H1_c()
        {
            Console.WriteLine("H1_c");
        }

}
   
   
    class H2_c
    {
        public H2_c()
        {
            Console.WriteLine("H2_c");

}

}


}

Program.cs:

using System;
    using H1;

class Test
    {
        static void Main()
        {
            H1_c h1 = new H1_c();
            H2_c h2 = new H2_c();
        }
    }

按F7编译后,没有问题,如果删除using H1,会报错,说找不到H1_c这个类,这个给了我们一个启示:

★在多文件编译时,如果想引入某个类,只需要使用“using”关键字包含这个类的空间。

下面进一步探讨。

对于上述的两个文件,作如下的更改:

CodeFile1.cs:

using System;
namespace H1
{
    class H1_c
    {
        public H1_c()
        {
            Console.WriteLine("H1_c");
        }

}
   
    namespace H2
    {
        class H2_c
            {
                public H2_c()
                {
                    Console.WriteLine("H2_c");
     
                }
     
            }
    }


}

Program.cs:

using System;
using H1;
//using H1.H2;//应该加上这句,否则报错

class Test
    {
        static void Main()
        {
            H1_c h1 = new H1_c();
            H2_c h2 = new H2_c();
        }
    }

还是按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
{
    class H1_c
    {
        public H1_c()
        {
            Console.WriteLine("H1_c");
        }

    }
   

   
    class H2_c
        {
            public H2_c()
            {
                Console.WriteLine("H2_c");
 
            }
 
       
}

Program.cs:

using System;

namespace H1
{
    class Test
    {
        static void Main()
        {
            H1_c h1 = new H1_c();
            H2_c h2 = new H2_c();
        }
    }
}

按F7编译通过了,在这里,并没有使用using H1的方式,而是写了同样的一个命名空间,会自动的引入类。

这说明:

分散在不同的源文件中的类,如果有相同的命名空间,可以直接引入。

下面进行总结:

在多文件编译时,如果想引入某个类,应当使用“using”关键字包含这个类所在空间的绝对地址。

分散在不同的源文件中的类,如果有相同的命名空间,可以直接引入。

命名空间,提供了一种组织相关类的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在一个命名空间中,可以嵌套其他的命名空间,为类型创建层次结构。命名空间与程序集无关,同一个程序集可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。

C#的源代码都以using System 开头,这是因为Microsoft提供的许多有用的类都包含在System命名空间中。

下面是一些常见的命名空间以及它们的作用:

System                    包含了基础类,用于定义类型/数组/字符串/事件/事件处理程序/

                                        异常 处理 /接口/数据类型转换/数学计算/应用程序环境管理等等.

System.Coolections            包含了一组用于管理对象集合(例如列表/队列/数组/哈希表/字典等)的类  

System.Data                      主要包括了组成ADO.NET体系结构的类

System.diagnostics                   提供用于调试/跟踪,以及与系统进程/事件日志/性能计数器进行交互的类

System.Drawing                     提供访问GDI+基本图形功能(在System.Drawing以下的命名空间,包括

                                                         System.Drawing.Drawing2DSystem.Drawing.Text等,提供了更高级和更特

                                                         殊的GDI+图形功能)的类

System.IO                                      包含了用于读写数据流/文件和普通输入/输出(I/O)功能的类型和类

System.Reflection                    包括提供类型检测和动态绑定对象功能的类和接口

System.reflection.Emit                 生成动态程序集

System.Text                                     包含用于字符编码/将字符块转换为字节快/将字节块转换为字符块等功能的

                                                             对象

System.Text.RegularExpressions包含了提供访问.NET框架正则表达引擎的类

System.Timer                                      提供了Timer组件

System.Web                                       包含了用于实施浏览器/服务器通信和其他Web相关功能的类

System.Web.Services                     包含了用于创建和消费Web服务的类

System.Web.UI                                      包含了用于创建Web页和控件的用户接口的类和接口

System.Windows.Forms                    包含了用于创建基于WINDOWS的用户接口的类

System.XML                                               提供了支持处理XML的类

 


 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有