【发布时间】:2011-10-09 22:06:12
【问题描述】:
我对“命名空间”一词的理解本质上是对类的理解;方法和变量的容器。尽管这似乎加倍了我认为是类的定义。
有人可以证实或澄清这种信念吗?
【问题讨论】:
-
这取决于。您对哪种编程语言感兴趣?
-
@Greg:这个问题可以以目前的形式回答。
标签: oop class object namespaces
我对“命名空间”一词的理解本质上是对类的理解;方法和变量的容器。尽管这似乎加倍了我认为是类的定义。
有人可以证实或澄清这种信念吗?
【问题讨论】:
标签: oop class object namespaces
命名空间不是 OOP 的特性。指定编程语言。
而且,是的,一般来说,它们类似于类,但只有那些不包含非静态成员的类(因为无法将命名空间实例化为对象)。 p>
【讨论】:
命名空间是一组类。编译后变成.dll。因此,我们可以将该 .dll 文件添加到我们的项目中,并且可以轻松地使用这些类。
【讨论】:
命名空间是给定名称保持唯一的域。例如,您可以定义许多名为 Widget 的类,但它们必须都出现在不同的域中,以便彼此唯一标识。
名称出现的域取决于定义它的上下文。例如,在 .NET 世界中,类名在命名空间中必须是唯一的,而它本身在程序集中也必须是唯一的,因此可以说类名唯一所在的域是命名空间,而命名空间的域是一个程序集
【讨论】:
命名空间主要用于避免名称冲突。假设如果您有一个名为 A 的类,但该类可能由其他人定义。所以在这种情况下,您需要将您的班级与其他班级分开。在那种情况下,命名空间开始起作用。例如:你在这个命名空间中给定命名空间'使用你的名字'你定义了一个类A。这样这个类就可以通过你的名字来区分。A。类似的方法,变量你可以在你自己的命名空间中定义的所有东西。
【讨论】:
在一般意义上,命名空间定义了一组唯一的名称。换言之,名称仅在命名空间内是唯一的。
由于这个概念适用于不同的语言,因此存在许多变体,包括封装、命名空间、范围等问题。
【讨论】:
命名空间用于在同一个程序模块中具有不同的编程规则。假设您想将函数 'string_addition' 定义为 'string1' + 'string2' = 'string1string2',但稍后在同一个程序中你想定义 'string_addition' 来表示 'string1' + 'string2' = 'string3 '。您可以使用命名空间,以便在同一个文件中调用不同的命名空间并获取两种规则。
namespace h:stringadd(string1, string2) = string1string2
namespace f:stringadd(string1, string2) = string3
【讨论】:
命名空间为您引用的标识符提供上下文。所以从这个意义上说,一个类也是一个命名空间。
【讨论】:
我会说命名空间是一种在容器中对符号进行逻辑分组的方式(类、函数……取决于您使用的确切语言) '不与其他命名空间中的其他符号(可能具有相同名称)发生冲突。
【讨论】: