C# 的基本问题 - 我需要命名空间吗?

问题描述 投票:0回答:6

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

c# namespaces
6个回答
23
投票

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

global::
使用。


18
投票

对于一次性测试应用程序(例如检查 Stack Overflow 答案),我不使用命名空间。对于“任何事情”,我都会这样做。这只是一个组织问题 - 如果您要重用代码,将其与您也在同一上下文中重用的其他代码分开会很有帮助。我的意思是,如果您使用 LibraryX 和 LibraryY 创建应用程序,那么能够在应用程序中区分它们会很有用。例如,它们可能都使用相同的类名 - 如果您不使用命名空间,这将使代码变得难看。 抛开其他事情不说,如果您使用 Visual Studio 进行编码,那么包含命名空间实际上需要更多工作

而不是

- 您必须修改项目以为其提供一个空的默认命名空间。


2
投票

为班级创建文件
  • 将文件添加到项目中
  • 在项目的默认命名空间中创建一个空类(在上面的文件中)。
  • “项目的默认命名空间”是开发人员工作室概念,而不是 C# 概念,并在项目的属性中设置。

当你创建一个 dll 供其他人使用时,如果你有一个命名空间,对于你的 dll 的用户来说会容易得多:

人们期望你有一个命名空间(所以如果你没有,可能会感到困惑)
  • 如果您的类(或枚举等)的名称与它们链接到的任何 dll 中的另一个类的名称相同,则命名空间可以让您的用户更轻松。
因此,我认为没有充分的理由不使用命名空间。


0
投票


0
投票

简短版本:不要这样做。

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


0
投票

当我有不同的类且彼此之间存在某种关联时,我个人会使用命名空间。对同一命名空间中的类进行分组允许我创建一个

Type

,我可以在命名空间范围之外使用它来访问命名空间内类的字段和方法。

总体而言,它改进了我的代码组织,并为我强制执行“关注点分离”思维。

在某些情况下,我的课程没有任何关联。在这种情况下,我通常不使用命名空间。

© www.soinside.com 2019 - 2024. All rights reserved.