C# 中的命名空间与 Java 中的包之间的区别爪哇岛C#

2022-08-31 09:38:08

C# 中的命名空间和 Java 中的包之间的区别(在使用方面)是什么?


答案 1

寄件人: 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 {}

包不能嵌套。一个源文件只能有一个包语句。

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 {}
    }
}

答案 2

有几个细节有所不同。

在 Java 中,目录结构应与包结构匹配。在 C# 中没有这样的限制。

在 C# 中,一个文件中可以有多个命名空间。在Java中,一个文件属于一个包(请参阅上文)。

Java 具有默认/包可访问性。C# 内部辅助功能在程序集中实现。

如果你使用VS和Eclipse,让他们构建项目,那么你就不会感觉到太多的差异。


推荐