1. 程式人生 > >4.3 命名空間和程序集

4.3 命名空間和程序集

image dll com alt 指示 str 名稱 bject http

  • 命名空間對相關的類型進行邏輯分組。
  • C# using 指令指示編譯器嘗試為類型名稱附加不同的前綴,直至找到匹配項。
  • CLR 對命名空間一無所知。訪問類型時,CLR需要知道類型的完整名稱以及類型定義在哪個具體的程序集中。
  • 編譯器掃描引用的所有程序集,查找類型定義。如果找到,程序集信息和類型信息就嵌入生成的托管模塊元數據中。
  • MSCorLib.dll 程序集包含了所有核心 Framework 類庫(FCL)的定義。(如 Object, Int32, String 等)
  • 潛在問題:多個類型在不同命名空間重名。需要開發人員確保唯一性。
  • C# using指令允許為類型或命名空間創建別名。
    技術分享
  • C# 編譯器提供外部別名(extern alias)功能。
  • CLR 編譯器在類型定義元數據表中添加的實際類型名稱。
    技術分享技術分享

    • 命名空間和程序集不一定相關:同一命名空間的類型可能在不同程序集中;同一程序集也可能包含不同命名空間。

    • 在MSDN中可以看到程序集以及命名空間
      技術分享



  • using 指令的範圍限制為包含它的文件。
  • 創建 using 別名,以便更易於將標識符限定到命名空間或類型。 using 別名指令的右側必須始終是一個完全限定類型,而與前面的 using 指令無關。
  • 創建 using 指令,以便在命名空間中使用類型而不必指定命名空間。 using 指令不為您提供對嵌套在指定命名空間中的任何命名空間的訪問。
    using System.Text 並不能訪問到System命名空間下的方法。

4.3 命名空間和程序集