C#Assembly、程式集、裝配件、名稱空間以及型別的關係
阿新 • • 發佈:2018-11-01
關於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四個型別。
這就是程式集和名稱空間的關係。