一周學C#_第5天
命名空間
1 問題
越大的程式包含的名字越多
越多的名字——越大的可能性導致命名衝突
你是怎樣命名以反映結構
顯示的首碼不是一個很好的解決方案
sealed class Book{...}
sealed class GUIBook{...}//這是傳統的命名方法
2 解決的方法
一個命名空間是一個邏輯的命名系統
命名空間表示一個範圍
任何.cs檔案中都可以在任一命名空間中插入類
單獨的一個.cs檔案可以訪問多個命名空間
namespace GUI
{
sealed class Book
{
...
}
}//這是【命名空間】的解決辦法
使用命名空間的方法可以反映程式中的邏輯關係。
上面的例子說明你中GUI命名空間聲明了一個類,叫Book,而不是使用GUIBook這個長名字。
3 嵌套的命名空間
一個命名空間可以包含其他的命名空間
使用嵌套來反映程式的結構
命名空間總是隱含為public
namespace RainForest
{
namespace GUI
{
sealed class Book
{
...
}
}
}
namespace RainForest.GUI
{
sealed class Book
{
...
}
}
【注意】上面兩個程式是等價的。
命名空間可以包含——類和其他的命名空間,但是不能包含資料。
嵌套的命名空間之間的結構反映了程式組織的邏輯結構。
命名空間隱含為public,也就是說命名空間的聲明不能包含任何存取修飾詞,連public也不能加。
命名空間之所以隱含為public,是因為這樣任何一個程式的任何一部分都可以訪問它。
還有必須注意,因為命名空間是隱含為public,所以它的命名應該使用PascalCase命名規則,即所有單詞的首字母大寫。
嵌套的命名空間可以非常有效組織大型程式的邏輯結構,但是每一層都重複鍵入關鍵字namespace的話,比較繁瑣,你可以像上面那樣使用簡寫。
4 全名
命名空間反映的是邏輯結構
帶點的全名稱是冗長和討人厭的
但它比不帶點的名字好
namespace RainForest.GUI
{
sealed class Book
{
...
private System.Collections.Hashtable pages;
}
}
命名空間的使用可以避免命名衝突,但是它會導致名字的長度增加。
5 using標記
using標記是類在命名空間中可見
只能在一個命名空間的開頭使用
namespace RainForest.GUI
{
using System.Collections;
...
sealed class Book
{
...
private Hashtable pages;
}
}
using標記只能用在命名空間的開頭,放在任何類聲明語句的前頭。注意using標記也可以放在.cs檔案的開頭。
6 引用別名
【using <別名>】會產生一個別名,它能用於:
u 類或命名空間;
u 只能被用在命名空間的開頭。
namespace RainForest.GUI
{
using Hashtable=System.Collections.Hashtable;
sealed class Book
{
...
Hashtable pages;
}
}