C#专题-C#的名称空间[类型名称]

本文详细介绍了C#中的名称空间概念,包括名称空间的定义、使用方式及其在程序中的作用。通过具体的例子展示了如何确定名称空间和类型的完全限定名称。
思多雅[天行健] 发布时间:2008.11.03
上一讲,我们学习了C#的签名和重载,及C#里名字的范围,这一节,我们来一起学习名称空间[类型名称]。
一 名称空间[类型名称]
    C#程序中的许多上下文都需要名称空间名称和类型名称来确认。名称的任何形式都是写作一个或多个由“ .”符号分开的标识符。
      namespace-name:
         namespace-or-type-name
      type-name:
         namespace-or-type-name
      namespace-or-type-name:
         identifi er
         namespace-or-type-name . identifie r

    一个类型名称是一个指向某个类型的名称空间或类型名称。后面的分析如下描述,类型名称的名称空间或类型名称必须指向一个类型,如果是其它就会产生错误。
一个名称空间名称是一个指向名称空间的名称空间名称或类型。后面的分析如下描述,名称空间名称的名称空间或类型名称必须指向一个类型,如果是其它就会产生错误。

名称空间或类型名称的意义如下所示:
如果名称空间或类型名称由单独的指示符组成:
如果名称空间或类型名称出现在类或结构的声明之内,那么从类或结构声明开始并且在嵌套类或结构声明中延续(如果有),如果有所给名称的成员存在,是可访问的并且指示了一种类型,那么名称空间或类型名称指向那个成员。注意无类型成员(构造函数、常数、域、方法、属性、索引和操作符)在确定名称空间或类型名称时是被忽略的。
否则,如果有名称空间或类型名称出现(如果有)的声明,同每个嵌套名称空间声明(如果有)一起,并且由全局名称空间结束,下面的步骤会被估计直到实体的位置确定:

如果名称空间包含一个给定名称的名称空间成员,那么名称空间或类型名称指向那个成员并且根据成员被分类为一个名称空间或一个类型。
如果名称空间声明包括一个把一个引入的名称空间或类型和一个给定名称联系起来的使用别名指示,那么名称空间或类型名称指向那个名称空间或类型。
如果由名称空间声明的使用名称空间指示引入的名称空间包含一个确切类型,那么名称空间或类型名称指向那个类型。
如果由名称空间声明的使用名称空间指示引入的名称空间包含多个确切类型,那么名称空间或类型名称是不明确的,并且会发生错误。
名称空间或类型名称就是未定义的并且会发生错误。
名称空间或类型名称是N.I 的形式,这里N 是一个有所有除了最右边一个指示符组成的名称空间或类型名称,而I 是最右边的指示符。N 是最先确定的名称空间或类型名称,如果N 的确定不成功,那么就会发生错误,否则,N.I 如下确定:

如果N 是名称空间而I 是那个名称空间中一个可访问的成员,那么N.I 指向那个成员并且根据成员分类为名称空间或类型。
如果N 是一个类或类型而I 是N 中的一个可访问类型,那么N.I 指向那种类型。
否则,N.I 是一个无效的名称空间或类型名称,并且会产生一个错误。

-------思多雅[天行健]版权所有,首发太平洋论论坛,转载请注明-------

二、合格的名称
    每个名称空间和类型都有一个完全限制名称,它在其它名称空间或类型中间唯一确定某个名称空间或类型。一个名称空间或变量的完全限制的名称N 由下面决定:
如果N 是全局名称空间的一个成员,它的完全限制的名称就是N 。
否则,它的完全限制的名称是S.N,这里S 是声明了N 的名称空间或类型的完全限制的名称。
    换句话说,N 的完全限制的名称是指向N 的标识符的完全分等级路径,从全局名称空间开始。因为名称空间或类型的每个成员都要有一个唯一的名称,它是由于一个名称空间或类型的完全限制的名称总是唯一的造成。

下面的例子介绍了许多名称空间和类型声明,和与它们相对应的完全限制的名称。
       class A {}             // A
       namespace X            // X
       {
           class B            // X.B
           {
             class C {}        // X.B.C
           }
           namespace Y        // X.Y
           {
             class D {}        // X.Y.D
           }
       }
       namespace X.Y          // X.Y
       {
           class E {}         // X.Y.E
       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值