命名空间

namespace Wrox
{
    namespace ProCsharp
    {
        namespace Basics
        {
            class NamespaceExample
            {
                // Code for the C△ ass here...
            }
        }
    }
}

每个名称空间都由它所在的名称空间的名称组成,这些名称用句点分隔开,开头是最外层的名称空间,最后是它自己的短名。所以ProCsharp的名称空间的全名是Wrox.ProCsharp.Basics.NamespaceExample的全名是Wrox.ProCsharp.NamespaceExample。

使用这个语法也可以阻止自己的名称空间定义中的名称空间,所以上面的代码也可以写为
namespace Wrox.ProCsharp.Basics
{
    class NamespaceExample
    {
        // Code for the C△ ass here...
    }
}

注意不允许在另一个嵌套的名称空间中声明多部分的名称空间。名称空间与程序集无关。同一个程序集中可以有不同的名称空间,也可在不同的程序集中的一同一名称空间的类型。

应在开始一个项目之前就计划定义名称空间的层次结构。一般可接受的格式是CompanyName.ProjectNameSystemSection.所以在上面的例子中,Wrox是公司名,ProCsharp是项目,对于本章,Basic是部分名。

1、using语句

显然,名称空间相当长,输入起来很繁琐,用这种方式指定某个类也不总是必要的,如本章开头所述,C#允许简写类的全名。为此,要在文件的顶部列出类的名称空间,前面加上using关键字。在文件的其它地方,就可以使用其类型名称来引用名称空间中的类型了:

using System;
using Wrox.ProCsharp;

如前所述,几乎所有的C#源代码都以语句using System;开头,这仅是因为Microsoft提供的许多有用的类都包含在System名称空间中。

如果using语句引用的两个名称空间包含同名的类型,就必须使用完整的名称(或者至少较长的名称),确保编译器知道访问哪个类型。例如,假如类NamespaceExample同时存在于Wrox.ProCSharp.Basics和Wrox.ProCSharp.OOP名称空间中。如果要在名称空间Wrox.ProCsharp中创建一个类Test,并在该类中实例化一个NamespaceExample类,就需要指定使用哪个类:

using Wrox.ProCSharp.OOP;
using Wrox.ProCSharp.Basics;
namespace Wrox.ProCsharp
{
    class Test
    {
        public static int Main()
        {
            Basics.NamespaceExample nsEx = neW Basics.NamespaceExample();
            // do something with the nsEx variable.
            return 0;
        }
    }
}

公司应花一些时间开发一种名称空间模式,这样其开发人员才能快速定位他们需要的功能,而且公司类不使用的类名也不会与现有的类库相冲突。

 

posted @ 2014-12-09 15:21  ILONEY  阅读(206)  评论(0)    收藏  举报