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();
}
}
}
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");
}
}
}
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
如下命令:
csc namespace.cs namespace01.cs
4.2生成類庫的方法:
csc /target:library cs文件(創建Dll文件)
如下命令:
csc /target:library namespace.cs
如下命令:
csc /target:library namespace.cs
4.3主文件與類庫關聯的方法
csc /reference:引用的類庫 主文件名
如下命令
csc /reference:namespace01.dll namespace.cs
如下命令
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");
}
}
}
}
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");
}
}
}
}
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");
}
}
}
}
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");
}
}
}
}