C#中的名稱空間和Java中的包之間有什麼區別(在使用方面)?C#中的名稱空間和Java中的包之間的區別
回答
來源:http://www.javacamp.org/javavscsharp/namespace.html
的Java
包是用來組織文件或公共類型以避免類型衝突。包結構可以映射到文件系統。
system.security.cryptography.AsymmetricAlgorithm aa;
可能被替換:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
沒有爲包沒有別名。您必須使用導入語句或完全限定名稱來提及特定類型。
package n1.n2;
class A {}
class B {}
或
package n1.n2;
class A {}
另一個來源的文件:
package n1.n2;
class B {}
包不能嵌套。一個源文件只能有一個包語句。
C#
命名空間用於組織方案,無論是作爲一個「內部」組織系統中的程序,和爲「外部」的組織系統。
System.Security.Cryptography.AsymmetricAlgorithm aa;
可以被替換:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
或者,可以指定的命名空間的別名,例如
using myAlias = System.Security.Crypography;
然後引用類與
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
或
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
在Java中沒有「命名空間」這樣的術語 - 一個包將作爲Java中的命名空間,但是爲名稱提供了一個範圍。它也是可訪問性模型的一部分。
從section 7 of the Java Language Specification:
程序被組織成組的包。每個包都有自己的一組類型名稱,這有助於防止名稱衝突。頂層類型在包之外是可訪問的(第6.6節),只有在類聲明爲public的時才聲明它。
編輯:好的澄清後:一個Java包是類似到C#命名空間 - 除了其具有無障礙的影響,而在C#的命名空間和可訪問性是完全正交的。
在C++/C#中,名稱空間只是用於分區名稱,以避免在不同位置爲變量意外使用相同名稱而導致衝突。
在Java中,軟件包遠不止於此 - 軟件包用於模塊,命名方面只是其中的一部分。
有幾個細節有所不同。
在Java中,目錄結構應該與包結構匹配。在C#中沒有 這樣的限制。
在C#中,一個文件中可以有多個名稱空間。在Java中,一個文件 屬於一個包(見前)。
Java具有默認/程序包可訪問性。 C#內部可訪問性在程序集中變爲 。
如果您使用VS和Eclipse並讓它們構建項目,那麼您將不會感覺到差異太大。
在java中,您可以將各種訪問說明符應用於會影響包的類。
保護:訪問相同的封裝與它在另一個包的子類, 默認:訪問同一個包, 市民:皆可訪問, 私人:甚至不是同一個包訪問。
這些類型的訪問說明符不適用於c sharp中的名稱空間
- 1. 根名稱空間和程序集名稱之間的區別
- 2. C++庫(名稱空間,鏈接)之間的區別
- 3. Hadoop中名稱空間與元數據之間的區別?
- 4. 默認命名空間和目標名稱空間之間的區別?空名稱空間?
- 5. XML中名稱空間的區別
- 6. 類和名稱空間之間的區別?
- 7. x:Key和x之間的區別:名稱
- 8. Java和C#和.NET之間的區別
- 9. Windows 7上的C和C $共享名稱之間的區別
- 10. C中的/ +和+之間的區別?
- 11. objective-c和java之間的區別
- 12. Java中= +和+ =之間的區別?
- 13. C#中char和int之間的區別#
- 14. C#中Convert.ToString()和.ToString()之間的區別?
- 15. Zend自動載入器名稱空間[]和自動載入器名稱空間之間的區別
- 16. Java包和C#的命名空間
- 17. Java中的類導入和包導入之間的區別?
- 18. sqlite_master中名稱和tbl_name之間的區別是什麼?
- 19. PowerShell cmdlet中計算機名稱和dnshostname之間的區別?
- 20. 軟件包名稱和Apple App商店名稱之間的區別是什麼?
- 21. SQLAlchemy中的數據庫名稱和模式名稱之間的區別?
- 22. 「使用MyNameSpace」之間的區別和「命名空間MyNameSpace」
- 23. 用戶空間和內核空間崩潰之間的區別
- 24. C#「var」和C++「auto」之間的區別
- 25. 在JDBC連接中使用TNS名稱和服務名稱之間的區別
- 26. C++中的名稱空間別名的作用域是什麼?
- 27. 「./file」名稱和「../文件名」之間的區別是什麼
- 28. DLL包裝和DLL之間的區別
- 29. C++中的命名空間別名
- 30. 使用包中的命名空間無名稱空間
我的意思是指在C#中的命名空間! – Mazzy 2012-02-12 14:08:59