【问题标题】:basic question on C# - do I need a namespace?关于 C# 的基本问题 - 我需要命名空间吗?
【发布时间】:2011-04-14 14:41:56
【问题描述】:

我是一名 Java 开发人员,对 C# 完全陌生。我目前正在编写一个用于在我的组织中分发的 DLL。这是一个非常简单的库,包含几个类,我认为仅仅为了它而将它们全部放入某个命名空间中没有任何实际用途。我真的必须使用命名空间吗?如果是这样,为什么?这是某种最佳实践吗?

【问题讨论】:

  • 当你在 Java 中做这样的事情时,你真的需要一个包吗?
  • 不过,你会在 java 中使用包命名空间,对吧?
  • 好的..所以这是导致我提出这个问题的真正问题。我尝试将所有类放入名为“A”的命名空间中。主类也被命名为“A”。这样,客户端应用程序就不得不将这个主类称为 A.A,这看起来很尴尬。这在 Java 中不会发生,因为在 Java 中,包名和类名之间有明显的区别。没有歧义的余地。C# 似乎不是这种情况。
  • 不要把你的类和命名空间命名得那么含糊,那么……
  • 我本来希望在程序集中的类之上没有命名空间(除非绝对需要),但不幸的是,VS 根据命名空间而不是它们所在的程序集来区分具有相同名称的类。阅读这也是namespaces-are-obsolete

标签: c# namespaces


【解决方案1】:

需要一个吗?不。应该你有一个吗?是的。它将有助于防止与其他命名空间中的同名类发生冲突,而不必求助于(恕我直言)丑陋地使用 global::

【讨论】:

  • 此外,这个概念很容易掌握和实现,因此没有真正的充分理由避免使用命名空间。
【解决方案2】:

对于一次性测试应用程序(例如检查 Stack Overflow 答案),我不使用命名空间。对于任何事情,我愿意。这只是一个组织的事情 - 如果您要重用代码,将它与您也在同一上下文中重用的其他代码分开会很有帮助。我的意思是,如果您正在使用 LibraryX 和 LibraryY 创建应用程序,那么能够在应用程序中区分它们是很有用的。例如,它们可能都使用相同的类名 - 如果您不使用命名空间,这会使代码变得丑陋。

除此之外,如果您使用 Visual Studio 进行编码,实际上不是要包含命名空间 - 您必须修改项目以为其提供一个空的默认命名空间。

【讨论】:

    【解决方案3】:

    不需要命名空间。但是开发人员工作室希望您使用名称空间。例如,当您选择向项目开发人员工作室添加一个类时:

    • 为类创建文件
    • 将文件添加到项目中
    • 在项目的默认命名空间中创建一个空类(在上述文件中)。

    “项目的默认命名空间”是开发人员工作室的概念,而不是 C# 概念,并在项目的属性中设置。

    当您创建一个 dll 供其他人使用时,如果您有一个命名空间,那么您的 dll 用户会更容易:

    • 人们希望您拥有命名空间(如果您没有命名空间,可能会感到困惑)
    • 如果您的类(或枚举等)与他们链接到的任何 dll 中的另一个类的名称相同,命名空间会让您的用户更轻松。

    因此,我认为没有充分的理由不使用命名空间。

    【讨论】:

    • 不确定“项目的默认命名空间”是否真的是工作室独有的功能。从 dll 读取嵌入式资源时,您需要在其路径前加上“项目默认命名空间”。所以它也是 .NET Framework 中的一个概念。也许有一个很好的理由......是的,这是一个高杰克:)
    【解决方案4】:

    我对“是”的投票我认为使用命名空间是一个好习惯。你不能确定人们不会使用相同的类名。

    【讨论】:

      【解决方案5】:

      要回复您关于将类命名为与其命名空间相同的评论,请阅读以下文章。

      短版:不要那样做。

      http://blogs.msdn.com/b/ericlippert/archive/2010/03/09/do-not-name-a-class-the-same-as-its-namespace-part-one.aspx

      【讨论】:

        【解决方案6】:

        基本上 System 是 asp.net C# 中的根命名空间。 在 .net 中,每个程序都是使用默认名称空间创建的。这个默认命名空间称为全局命名空间。但是程序本身会创建任意数量的命名空间,每个命名空间都是唯一的。

        了解更多 http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html

        【讨论】:

          猜你喜欢
          • 2021-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-22
          • 2011-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多