澄清术语“命名空间”

时间:2011-07-21 04:34:11

标签: oop class object namespaces

我对术语“命名空间”的理解基本上是一个类;方法和变量的容器。虽然这似乎是我认为是一个阶级定义的两倍。

有人可以证实或澄清这种信念吗?

8 个答案:

答案 0 :(得分:3)

我想说命名​​空间是一种逻辑分组符号的方式(类,函数,......取决于你正在使用的确切语言)在一个容器中,确保那些符号不要在其他名称空间中与其他符号(可能名称相同)发生冲突。

答案 1 :(得分:3)

命名空间主要用于避免名称冲突。假设您是一个名为A的类,但此类可能由其他人定义。因此,在这种情况下,您需要将您的班级与其他班级分开。在那个实例中,Namespace会起作用。例如:你在这个名称空间中给出了'使用你的名字'命名空间你定义了一个A类。所以这个类可以用yourname.A来区分。类似的方法,变量你可以在自己的命名空间中定义所有东西。

答案 2 :(得分:1)

命名空间为您引用的标识符提供上下文。所以从这个意义上说,一个类也是一个命名空间。

答案 3 :(得分:1)

命名空间用于在同一程序模块中具有不同的编程规则。假设您要将函数'string_addition'定义为'string1'+'string2'='string1string2',但稍后在同一程序中您要将'string_addition'定义为'string1'+'string2'='string3 ”。您可以使用命名空间,以便在同一文件中调用不同的命名空间并获得两种规则。

namespace h:stringadd(string1, string2) = string1string2

namespace f:stringadd(string1, string2) = string3

答案 4 :(得分:0)

在一般意义上,命名空间定义了一组唯一的名称。换句话说,名称在名称空间中只是唯一的。

由于此概念适用于不同语言,因此存在许多变体,包括封装,名称空间,范围等问题。

答案 5 :(得分:0)

命名空间是给定名称保持唯一的域。例如,您可以定义许多名为Widget的类,但它们必须全部出现在单独的域中,以便彼此唯一标识。

出现名称的域取决于定义它的上下文。例如,在.NET世界中,类名在名称空间中必须是唯一的,名称空间本身在程序集中必须是唯一的,因此可以说类名称唯一的域是名称空间和名称空间的域是一个集会

答案 6 :(得分:0)

命名空间是一组类。它在编译后变成.dll。所以我们可以将.dll文件添加到我们的项目中,并且可以轻松地使用这些类。

答案 7 :(得分:0)

命名空间不是OOP的功能。指定编程语言。

而且,是的,一般来说它们类似于类,但只有那些不包含非静态成员的类(因为命名空间无法实例化以形成对象)。