摘要:[筆記文]命名空間 Namespace
參考來自 MSDN Library (繁體中文) 和 維基百科
開發工具和環境:VS2005 + .NET Framework 2.0
定義:
命名空間是當做組織系統使用,並且會提供方法以分類和呈現程式設計項目,而這些項目已公開給其他程式和應用程式。請注意,就這種意義而言,命名空間不是類別或結構的「型別」。不可將程式設計項目宣告成具有命名空間的資料型別。
只有在檔案或命名空間層級才可以使用 Namespace 陳述式。這表示命名空間的「宣告內容」必須是原始程式檔 (Source File) 或另一個命名空間,且不可以是類別、結構、模組、介面或程序。
例如,設Bill是X公司的員工,員工代號為123,而John是Y公司的員工,員工代號也是123。由於兩人在不同的公司工作,可以使用相同的員工代號來識別而不會造成混亂,這裡每個公司就表示一個獨立的命名空間。
Bill = X公司.123 ,John = Y公司.123,而當 Bill John 在同一家公司時,其員工代號就不可重覆,否則在支付工資時便會發生混亂。
規則 :
屬性 (Attribute):不可將屬性套用至命名空間。屬性會將資訊提供給組件的中繼資料 (Metadata),這對來源 Classifier (例如命名空間) 不具任何意義。
修飾詞 (Modifier):不可將任何存取或程序修飾詞 (或其他任何修飾詞) 套用至命名空間。因為它不是型別,所以這些修飾詞不具意義。
巢狀:可以在另一個命名空間內宣告某個命名空間。您可宣告的巢狀層級並沒有嚴格限制,但請記住,其他程式碼存取最內層命名空間中所宣告的項目時,它必須在巢狀階層中使用限定性條件字串,而該字串則包含所有的命名空間名稱。
補充:命名空間被視為具有 Public 存取層級。可從相同專案內、從參考該專案的其他專案,以及從該專案建置之任何組件某處的程式碼存取命名空間。
備註:
.NET Framework 命名空間會解決所謂「命名空間干擾」(Namespace Pollution) 的問題,也就是類別庫的開發人員因為使用與另一個程式庫類似的名稱而受到阻礙的情況。這些與現有元件所產生的衝突有時稱為「名稱衝突」。
行為:
存取層級:命名空間層級上所宣告的程式設計項目 (在命名空間內有意義,但在其他任何項目內則不具意義) 可具有 Public 或 Friend 存取。如果未指定,則這類項目的存取層級會預設值為Friend。可在命名空間層級宣告的項目包含類別、結構、模組、介面、列舉型別 (Enumeration) 和委派 (Delegate)。如需詳細資訊,請參閱宣告內容和預設存取層級。
編譯:在 Namespace 陳述式後面宣告的所有程式設計項目都屬於該命名空間。除非 Visual Basic 遇到 End Namespace 陳述式或另一個 Namespace 陳述式,否則它會繼續將項目編譯至最後宣告的命名空間。
加入至命名空間:如果已定義命名空間 (即使是在專案外部),仍可加入程式設計項目至這個命名空間中。若要這樣做,可使用 Namespace 陳述式指示 Visual Basic 將下列項目編譯至該命名空間。
根命名空間:專案中的所有命名空間名稱都是依據「根命名空間」而命名。Visual Studio 會根據專案內的所有程式碼,將專案名稱指定為預設根命名空間的名稱。例如,如果專案已命名為Payroll,則它的程式設計項目會屬於命名空間 Payroll。如果宣告 Namespace funding,則該命名空間的完整名稱是 Payroll.funding。
備註:
在命名空間中,您可以定義像是模組、介面、類別、委派 (Delegate)、列舉、結構和其他命名空間等項目。您無法在命名空間層級定義諸如屬性、程序、變數和事件的項目。這些項目必須在諸如模組、結構或類別的容器 (Container) 內宣告。
連結網址 :
Visual Basic 中的命名空間
http://msdn.microsoft.com/zh-tw/library/zt9tafza(VS.80).aspx
命名空間
http://msdn.microsoft.com/zh-tw/library/cc436919(VS.71).aspx
命名空間
http://zh.wikipedia.org/zh-tw/%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4
====================================================
有些事就該把它當作一種回憶...
一種放在記憶中任隨時間慢慢的侵蝕慢慢的隨風漂泊........
===================================================
~~~請支持 點部落 格,點點下方的廣告吧~~~