1. 程式人生 > >C#Assembly、程式集、裝配件、名稱空間以及型別的關係

C#Assembly、程式集、裝配件、名稱空間以及型別的關係

關於Assembly、程式集、裝配件的關係

  首先有三個概念:Assembly、程式集、裝配件

  之前差了好多的帖子,都是在講定義的時候用Assembly,然後又開始講解程式集的理解,話鋒一轉就有開始講裝配件,一直搞不明白如果Assembly就是裝配件的話,那程式集和裝配件的關係是什麼?

  然後心生一計:谷歌翻譯

                 Assembly   谷歌直譯是:配件

                 程式集        谷歌直譯是:Assembly

  所以:Assembly、程式集、裝配件其實指的是同一個東西。下文中統一使用程式集代表這三個概念。

關於程式集和名稱空間的關係

  查閱資料的過程中,又看到一句話:

                名稱空間是類的邏輯組織形式,程式集是類的物理組織形式。

  只有我們在指定了程式集,然後在指定了名稱空間之後,才能真正的去確定一個類。程式集其實和名稱空間沒有什麼必然的聯絡。

  我們還可以這樣理解:名稱空間其實是程式集內部相關聯類的一個分組,比如:System.Data名稱空間裡面就都是有關資料的型別,System.IO名稱空間裡面就是有關檔案I/O型別的。

我們也可以通過下面的虛擬碼來更深入的瞭解:

程式集1:
namespace1{
    public class A1{...}
    public class A2{...}
}

namespace2{
    public class A3{...}
    public class A4{...}
}

程式集2:
namespace1{
    public class B1{...}
    public class B2{...}
}

namesapce2{
    public class B3{...}
    public class B4{...}
}

  現在有程式集1 和程式集2,程式集裡面分別都有namespace1和namespace2,加入我們現在只去引用程式集1,那麼我們在namespace1裡面只能使用A1和A2型別,當然我們如果只去引用程式集2,那麼此時我們在namespace1裡面只能使用B1和B2型別。如果此時我們同時引用了程式集1和程式集2的話那麼我們在namespace裡面就可以使用A1、A2、B1、B2四個型別。

  這就是程式集和名稱空間的關係。