C# 名称空间

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

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

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

  

namespace ProCSharp
{
    namespace Demo
    {
        public class Test
        {

        }
    }
}

 

一、using语句


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

 

using ProCSharp.Demo;

 

二、名称空间的别名


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

 

using alias = ProCSharp.Demo;

   

  下面的例子给ProCSharp.Demo名称空间指定别名alias,并使用这个别名实例化了在该名称空间中定义的Test对象。注意名称空间别名的修饰符是“::”。因此将强制先从alias名称空间别名开始搜索。如果在相同的作用域中引入了alias类,就会发生冲突。即使出现了冲突,“::”运算符也允许引用别名。Test类有一个方法GetNamespace(),该方法调用每个类都有的GetType()方法,以访问表示类的类型的Type对象。下面使用这个对象来返回类的名称空间名

 

using static System.Console;
using alias = ProCSharp.Demo;
namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            alias::Test test = new alias.Test();
            WriteLine(test.GetNamespace());
            ReadLine();
        }
    }
}
namespace ProCSharp.Demo
{
    public class Test
    {
        public string GetNamespace()
        {
            return this.GetType().Namespace;
        }
    }
}

 

posted @ 2022-01-03 15:30  G-Heizi  阅读(83)  评论(0)    收藏  举报