使用指示符2007-11-10 本站 使用指示符的目的是为了方便使用其它的名字空间中定义的名字空间和类型。名字空间的指示符有两种:别名使用指示符(using-alias-directive)和名字空间使用指示符(using-namespace-directive)。16.3.1 别名使用指示符C#支持使用别名。别名使用指示符定义一个别名,以后就可以使用这个别名来代替一个类型。这在两个库的名字可能发生冲突的情况下非常有用。别名还可以避免使用冗长的名字空间。如下面的代码定义了MessageSource作为类WelcomeMessage的别名:using MessageSource=MyProgram.CSharp.FirstApp.WelcomeMessage;别名使用指示符为我们提供了一个标识符,在整个编译单元或是在名字空间主体之中,这个标识符作为名字空间或类型的别名。别名使用指示符的语法格式为:using identifier=namespace-or-type-name;可以在成员声明中包含别名使用指示符,这个别名可以用来指代名字空间,也可以用来指代类型,例如:namespace N1.N2
{
class A{}
}
namespace N3
{
using A=N1.N2.A;
class B:A{}
}
那么在名字空间N3的成员声明中,A作为N1.N2.A的别名,则:class B:A{}表示N3.B从类N1.N2.A中继承。下面例子中的写法也可以达到同样的效果:namespace N3
{
using R=N1.N2;
class B:R.A{}
}
注意别名的标识符不能与同一编译单元或名字空间中的其它成员同名。例如下面的代码就是不合法的,因为名字空间N3已经包含了成员A:namespace N3
{
class A{}
}
namespace N3
{
using A=N1.N2.A; //错误,A已经存在
}
在用到别名使用指示符时,其中的别名只是在特定的编译单元或名字空间中有效。看下面的例子:namespace N3
{
using R=N1.N2;
}
namespace N3
{
class B:R.A{} //错误,R在这里是未知
}
别名R只在包含它的名字空间的主体中有效,在名字空间的第二次声明中R是未知的。但把别名使用指示符放在编译单元中,别名对于两处声明都是有效的:using R=N1.N2;
namespace N3
{
class B:R.A{}
}
namespace N3
{
class C:R.A{}
}