20.組合體、名字空間和訪問級別
在C#中,你可以把你源代碼中的組件(類、結構、委托、枚舉等)組織到文件、名字空間和組合體中。
名字空間不過是長類名的語法上的甜言蜜語而已。例如,用不著這麼寫Genamics.WinForms.Grid,你可以如此聲明類Grid並將其包裹起來:
namespace Genamics.WinForms
{
public class Grid
{
//....
}
}
對於使用Grid的類,你可以用using關鍵字導入【譯注:即using Genamics.WinForms】,而不必用其完整類名Genamics.WinForms.Grid。
組合體是從項目文件編譯出來的exe或dll。.NET運行時使用可配置的特性和版本法則,把它們創建到組合體,這大大簡化了部署—不需要寫注冊表,只要把組合體拷到相關目錄中去即可。組合體還可以形成一個類型邊界,從而解決類名沖突問題。同一組合體的多個版本可以共存於同一進程。每一個文件都可以包含多個類、多個名字空間。一個名字空間可以橫跨若干個組合體。如此以來,系統將可獲得更大的自由度。
C#中有五種訪問級別:private、internal、protected、internal protected和public【譯注:internal protected當然也可以是protected internal,此外再無其它組合】。private和public和Java中意思一樣。C#中,沒有標明訪問級別的就是private,而不是包范圍的。internal訪問被局限在組合體中而不是名字空間(這和Java更相似)中。Internal protected等價於Java的protected。protected等價於Java的private protected,而它已被Java廢棄。