C#中的命名空间namespace与Java中的包package之间的区别

时间:2024-01-04 17:02:32

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 {}
}
} from: https://cloud.tencent.com/developer/ask/35308
http://www.javacamp.org/javavscsharp/namespace.html