C# 中的命名空间与 Java 中的包之间的区别爪哇岛C#
C# 中的命名空间和 Java 中的包之间的区别(在使用方面)是什么?
寄件人: http://www.javacamp.org/javavscsharp/namespace.html
包用于组织文件或公共类型,以避免类型冲突。包构造可以映射到文件系统。
system.security.cryptography.AsymmetricAlgorithm aa;
可替换:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
包没有别名。必须使用 import 语句或完全限定的名称来提及特定类型。
package n1.n2;
class A {}
class B {}
或
package n1.n2;
class A {}
另一个源文件:
package n1.n2;
class B {}
包不能嵌套。一个源文件只能有一个包语句。
命名空间用于组织程序,既作为程序的“内部”组织系统,也作为“外部”组织系统。
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 中,目录结构应与包结构匹配。在 C# 中没有这样的限制。
在 C# 中,一个文件中可以有多个命名空间。在Java中,一个文件属于一个包(请参阅上文)。
Java 具有默认/包可访问性。C# 内部辅助功能在程序集中实现。
如果你使用VS和Eclipse,让他们构建项目,那么你就不会感觉到太多的差异。