命名空间

 命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的其他开发人员:这两个类是如何相关的以及如何使用它们

namespace CustomerPhoneBookApp
{
using System;

public struct Subscriber
{
// Code for struct here...
}
}

把一个类型放在命名空间中,可以有效地给这个类型指定一个较长的名称,该名称包括类型的命名空间,后面是句点(.)和类的名称。在上面的例子中,Subscriber结构的全名是CustomerPhoneBookApp.Subscriber。这样,有相同短名的不同的类就可以在同一个程序中使用了。全名常常称为完全限定的名称。

也可以在命名空间中嵌套其他命名空间,为类型创建层次结构:

namespace Wrox
{
namespace ProCSharp
{
namespace Basics
{
class NamespaceExample
{
// Code for the class here...
}
}
}
}

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

使用这个语法也可以组织自己的命名空间定义中的命名空间,所以上面的代码也可以写为:

namespace Wrox.ProCSharp.Basics
{
class NamespaceExample
{
// Code for the class here...
}
}

注意不允许在另一个嵌套的命名空间中声明多部分的命名空间

using语句

命名空间相当长,键入起来很繁琐,用这种方式指定某个类也是不必要的。

C#允许简写类的全名。为此,要在文件的顶部列出类的命名空间,前面加上using关键字。在文件的其他地方,就可以使用其类型名称来引用命名空间中的类型了:

using System;
using Wrox.ProCSharp;

如果using指令引用的两个命名空间包含同名的类型,就必须使用完整的名称(或者至少较长的名称),确保编译器知道访问哪个类型

using Wrox.ProCSharp;

class Test
{
public static int Main()
{
Basics.NamespaceExample nSEx = new Basics.NamespaceExample();
//do something with the nSEx variable
return 0;
}

命名空间的别名

using关键字的另一个用途是给类和命名空间指定别名。如果命名空间的名称非常长,又要在代码中使用多次,但不希望该命名空间的名称包含在using指令中(例如,避免类名冲突),就可以给该命名空间指定一个别名,其语法如下:

using alias = NamespaceName;

给Wrox.ProCSharp.Basics命名空间指定Introduction别名,并使用这个别名实例化了一个NamespaceExample对象,这个对象是在该命名空间中定义的。注意命名空间别名的修饰符是::。

using System;
using Introduction = Wrox.ProCSharp.Basics;
class Test
{
public static int Main()
{
Introduction::NamespaceExample NSEx =
new Introduction::NamespaceExample();
Console.WriteLine(NSEx.GetNamespace());
return 0;
}
}  

namespace Wrox.ProCSharp.Basics
{
class NamespaceExample
{
public string GetNamespace()
{
return this.GetType().Namespace;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值