C#2005 .NET3.0高级编程学习笔记————命名空间

来源:互联网 发布:淘宝虚拟产品怎么发货 编辑:程序博客网 时间:2024/06/06 19:43

     命名空间提供了一种组织相关类和其他类型的方式。它是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它。

        把一个类型放在命名空间中,可以有效地给这个类型指定一个较长的名称,该名称包括类型的命名空间,后面是句点(.)和类的名称。

namespace Ling
{
        
using System;
        
public struct  Test
        
{
            ...........
        }

}

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

namespace Ling
{
     
namespace  Note
      
{
          
namespace   One
            
{
                
class Test
                 
{
                      .........
                 }

            }

      }

}

           每个命名空间名都由它所在的命名空间的名称组成,这些名称用句点分隔开。可以组织自己的命名空间定义中的命名空间,上面的代码也可以写为:

namespace Ling.Note.One
{
      
class Test
      
{
          ............
      }

}

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

       using语句

    显然命名空间相当长,键入起来很烦琐,用这种方式指定某个类也是没必要的,因为C#允许简写类的全名。在文件的顶部列出类的命名空间,前面加上using关键字,在文件的其他地方,就可以使用其类型名称来引用命名空间中的类型了:

using System;
using Ling.Note.One;

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

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

      要注意,using语句在这些文件之间并没有建立物理链接。

       命名空间的别名

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

using 别名=命名空间名;

      下面的例子给ling.note.one命名空间指定ling别名,并使用这个别名实例化了一个test对象,这个对象是在该命名空间中定义的。注意命名空间别名的修饰符是::。

using System;
using Chen=Ling.Note.One;
class Pro
{
     
public static int Main()
     
{
          Chen::Test NamespaceTest
= new Chen::Test();
          Console.WriteLine(NamespaceTest.GetNamespace());
          
return 0;
     }

}


namespace Ling.Note.One
{
       
class  Test
       
{
            ................
            
public string GetNamespace()
             
{
                   
return this.GetType().Namespace;
             }

       }

}