【问题标题】:Clarification of the term "Namespace"澄清术语“命名空间”
【发布时间】:2011-10-09 22:06:12
【问题描述】:

我对“命名空间”一词的理解本质上是对类的理解;方法和变量的容器。尽管这似乎加倍了我认为是类的定义。

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

【问题讨论】:

  • 这取决于。您对哪种编程语言感兴趣?
  • @Greg:这个问题可以以目前的形式回答。

标签: oop class object namespaces


【解决方案1】:

命名空间不是 OOP 的特性。指定编程语言。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          在一般意义上,命名空间定义了一组唯一的名称。换言之,名称仅在命名空间内是唯一的。

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

          【讨论】:

            【解决方案6】:

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

            namespace h:stringadd(string1, string2) = string1string2
            
            namespace f:stringadd(string1, string2) = string3
            

            【讨论】:

            • 你也可以使用类;然而,有时命名空间有更好的模板,并且很容易编辑成你喜欢的任何形式,命名空间也可以作用于不同的规则集,命名空间在范围和可访问性方面很方便。
            • 命名空间限制允许的文档内容、验证数据、执行特殊的递归数据库任务、限制数据方面、设置数据类型和格式等。它们的特殊用途是让您作为程序员的生活更轻松。
            • 不错。你知道你的答案在 php 中的语法是什么吗?
            • 让我们使用手册。 :D 这里有一个例子:php.net/manual/en/language.namespaces.definitionmultiple.php 在你设置一个新的命名空间后,你可以从你正在使用的命名空间调用一个类。尝试使用命名空间 a; class dog{static function say() {echo "I am English: woof woof!"}} 命名空间 b; class dog{static function say() {echo "Boku ha Nihonjin: wan wan!"}}
            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

              我会说命名空间是一种在容器中对符号进行逻辑分组的方式(类、函数……取决于您使用的确切语言) '不与其他命名空间中的其他符号(可能具有相同名称)发生冲突。

              【讨论】:

                猜你喜欢
                • 2018-09-28
                • 1970-01-01
                • 2018-10-10
                • 2014-04-09
                • 2021-02-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多