C# namespace 與 Java package 均用於組織程式碼、控制存取權限,但底層機制有本質差異。
internal、Java package-private)。| 特性 | C# namespace | Java package |
|---|---|---|
| 邏輯結構 | 獨立於檔案系統 | 必須與目錄結構完全一致 |
| 物理存放 | 任意位置 | 強制對應套件名稱路徑 |
| 單一檔案 | 可包含多個 namespace | 單一 package(目錄) |
namespace A.B.C 形成真正階層,A.B 為 A.B.C 的父命名空間。package a.b 與 package a.b.c 無父子關係,僅為命名慣例,彼此平行獨立。需 import a.b.* 才能存取 a.b 的類別。| 操作 | C# | Java |
|---|---|---|
| 宣告 | namespace MyApp { } | package myapp; |
| 引用 | using MyApp; | import myapp.*; |
| 別名 | using Alias = MyApp.Sub; | 不支援 |