小智 70
来自:http://www.javacamp.org/javavscsharp/namespace.html
包用于组织文件或公共类型以避免类型冲突.包构造可以映射到文件系统.
system.security.cryptography.AsymmetricAlgorithm aa;
Run Code Online (Sandbox Code Playgroud)
可能会被替换:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
Run Code Online (Sandbox Code Playgroud)
包没有别名.您必须使用import语句或完全限定名称来提及特定类型.
package n1.n2;
class A {}
class B {}
Run Code Online (Sandbox Code Playgroud)
要么
package n1.n2;
class A {}
Run Code Online (Sandbox Code Playgroud)
另一个源文件:
package n1.n2;
class B {}
Run Code Online (Sandbox Code Playgroud)
包不能嵌套.一个源文件只能有一个package语句.
命名空间用于组织程序,既可以作为程序的"内部"组织系统,也可以作为"外部"组织系统.
System.Security.Cryptography.AsymmetricAlgorithm aa;
Run Code Online (Sandbox Code Playgroud)
可能会被替换:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
Run Code Online (Sandbox Code Playgroud)
或者,可以为命名空间指定别名,例如
using myAlias = System.Security.Crypography;
Run Code Online (Sandbox Code Playgroud)
然后用类来引用该类
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
Run Code Online (Sandbox Code Playgroud)
要么
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
Run Code Online (Sandbox Code Playgroud)
Aca*_*uza 40
有一些细节不同.
在Java中,目录结构应与包结构匹配.在C#中没有这样的限制.
在C#中,您可以在一个文件中拥有多个名称空间.在Java中,一个文件属于一个包(参见前面的内容).
Java具有默认/包可访问性.C#内部可访问性在程序集中.
如果您使用VS和Eclipse并让它们构建项目,那么您将不会感受到太多差异.
Jon*_*eet 34
在Java中没有"命名空间"这样的术语 - 在提供名称范围方面,包在Java中充当命名空间.它也是可访问性模型的一部分.
程序被组织为一组包.每个包都有自己的类型名称集,这有助于防止名称冲突.顶级类型可以在包外部访问(第6.6节),只有在声明类型为public时才声明它.
编辑:好的,澄清之后:Java包类似于 C#名称空间 - 除了它对可访问性有影响,而在C#名称空间和可访问性完全正交.
kba*_*kba 12
在C++/C#中,名称空间仅用于对名称进行分区,以避免因意外地在不同位置对变量使用相同名称而发生冲突.
在Java中,包远不止于此 - 包用于模块,命名方面只是其中的一部分.
归档时间: |
|
查看次数: |
81426 次 |
最近记录: |