了解C#命名空間

一、C#命名空間
    C#命名空間用來定義類的範的範圍,每個命名空間都包含可在程序中使用的類型:類,結構、枚舉、委托和接口。使用using引用命名空間,如常用的using System;
使用嵌套命名空間時,需要使用全路徑

二、使用命名空間的好處
     代碼可分佈在多個文件中
     命名空間具有擴展性
     可以堆砌出層次式的類組織結構

三、代碼可分佈在多個文件中
       相同的命名空間可以分布在不同的文件中,如下面代碼中的CG命名空間分佈在namespace.cs和namespace01.cs兩個文件中,這兩個文件共同組合成一個命名空間CG
       注:嵌套類只能在同一文件中,不可以跨不同文件

namespace.cs文件代碼:
using System;
namespace CG
{
    
class test
    {
        
static void Main()
        {
            PrintName pn
=new PrintName();
            pn.intro();
        }
    }
}

namespace01.cs文件代碼:
using System;
namespace CG
{
    
public class PrintName
    {
        
public void intro()
        {
            Console.WriteLine(
"My name is A");
        }
    }
}

四、命名空間具有擴展性
    上例中兩個命名空間,分布在不同的文件中,我們變更其中一個文件而不會影響另一個文件。這個命名空間更具有擴展性。如:將上例中副命名空間產生成Dll文件,主命令空間引用此Dll。當副命名空單變更時,主命名空間不需要重新編譯,即可得到結果。
注:
4.1編輯主副文件方法:
    csc 主cs文件 副cs文件
如下命令:
    csc 
namespace.cs namespace01.cs

4.2生成類庫的方法:
    csc /target:library  cs文件(創建Dll文件)
如下命令:
    csc 
/target:library namespace.cs

4.3主文件與類庫關聯的方法
    csc /reference:引用的類庫 主文件名 
如下命令
    csc 
/reference:namespace01.dll namespace.cs

五、可以堆砌出層次式的類組織結構
    如下面代碼中的A.A1;A.A2兩個命名空單,這樣更容易分組與管理
using System;
namespace CG
{
    
class test
    {
        
static void Main()
        {
            A.A1.PrintName a
=new A.A1.PrintName();
            a.intro();
            A.A2.PrintName b
=new A.A2.PrintName();
            b.intro();
            Console.ReadLine();
        }
    }
}
namespace A
{
    
namespace A1
    {
        
public class PrintName
        {
            
public void intro()
            {
                Console.WriteLine(
"My name is A");
            }
        }
    }
    
namespace A2
    {
        
public class PrintName
        {
            
public void intro()
            {
                Console.WriteLine(
"My name is B");
            }
        }        
    }
}

六、命名空間別名(Alies)
    使用別名可以程序更簡捷
使用方法:
    using 別名=命名空間

如下面源代碼與變更后代碼對比:

源:
using System;
namespace CG
{
    
class test
    {
        
static void Main()
        {
            ParentNameSpace.ChildNameSpace.PrintName a
=new ParentNameSpace.ChildNameSpace.PrintName();
            a.intro();
            Console.ReadLine();
        }
    }

}
namespace ParentNameSpace
{
    
namespace ChildNameSpace
    {
        
public class PrintName
        {
            
public void intro()
            {
                Console.WriteLine(
"My name is A");
            }
        }
    }
}

此代碼變成別名形式為:


using System;
using MySpace=ParentNameSpace.ChildNameSpace;
namespace CG
{
    
class test
    {
        
static void Main()
        {
            MySpace.PrintName a
=new MySpace.PrintName();
            a.intro();
            Console.ReadLine();
        }
    }

}
namespace ParentNameSpace
{
    
namespace ChildNameSpace
    {
        
public class PrintName
        {
            
public void intro()
            {
                Console.WriteLine(
"My name is A");
            }
        }
    }
}

原文地址:https://www.cnblogs.com/scottckt/p/1140227.html