4

我来自Java,看到Java中的包非常方便。当您将一个类移动到另一个包时,它会自动更改包。(当然也可以通过 Eclipse 或 Netbean 等 IDE)

但是 C# 正在使用命名空间,并且不会像在 Java 中那样自动重命名我的命名空间。例如,我有一个名称空间为的文件,com.app我将其放入com.app,但稍后,我将此文件移动到com.lib文件夹,其名称空间仍为com.app. 所以,我发现这很难管理,因为我手动移动它。

请帮助我解决我的问题。(该文件的命名空间由它包含的文件夹命名,当我移动到其他时,我会自动更改)。我们能做到吗?

4

2 回答 2

6

我通过使用名为Resharper的 IDE 插件解决了这个问题。(在许多有用的功能中)它会在命名空间错误时突出显示(基于程序集的文件夹层次结构和根命名空间),并且可以为您修复它。

请注意,与 Java 不同,有时有非常正当的理由使类位于名称空间中,不是由目录结构推断出的名称空间中。一个很好的例子可能是扩展方法类,它需要在调用它们的类的范围内。因此,通常有:

/myProject
  /extensions
     /MyExtensionMethodClass.cs

具有类似的命名空间myProject(以便扩展方法可以在 myProject 中的任何位置使用,而无需使用指令)

于 2012-05-18T04:20:27.813 回答
2

这实际上是因为 C# 具有部分类的概念,也就是说,您可以将 C# 类分布在多个文件中,而不是像 Java 那样将其编码到单个文件中。因此,.Net 中的命名空间是分布式容器,而不是由命名空间操作员定义的集中式容器。

于 2012-05-18T04:21:10.360 回答