Vb.net 使用嵌套名称空间而不是部分公共的不可继承类是否有优势

Vb.net 使用嵌套名称空间而不是部分公共的不可继承类是否有优势,vb.net,class,namespaces,shared,Vb.net,Class,Namespaces,Shared,使用分部不可继承类的优点似乎是可以在其中声明/实现共享方法 下面是一个代码示例,有助于将问题可视化 Namespace MyNamespace.Utility ' Cannot Declare Shared Function Public NotInheritable Class Document ' Can Declare Shared Function End Class End Namespace 这是反对的 Namespace M

使用
分部
不可继承
的优点似乎是可以在其中声明/实现共享方法

下面是一个代码示例,有助于将问题可视化

Namespace MyNamespace.Utility
    ' Cannot Declare Shared Function
    Public NotInheritable Class Document
        ' Can Declare Shared Function        
    End Class
End Namespace
这是反对的

Namespace MyNamespace
    Partial Public NotInheritable Class Utility
        ' Can Declare Shared Function
        Partial Public NotInheritable Class Document
            ' Can Declare Shared Function
        End Class
    End Class
End Namespace

实用程序应该是命名空间,因为它充当逻辑分组。


我不同意您的说法,即密封类的优点在于您可以定义静态方法,任何类都可以这样做。

注意“Collection”是从另一个组件导入的名称空间。这是我在整个项目中定义的TypeDef类/对象(数据类型)的KeyValuePairs的集合。看看这个老问题,它可能应该转移到另一个SO社区。对,但比较是一个密封类到命名空间。你提到的那篇文章请原谅这篇文章。。您引用的文章似乎不适合密封类与名称空间的概念。。因为变量和对象实例的声明不适用。嵌套对象也是逻辑分组。它们的用法没有实际区别,对吗?MyComponent.Utility.Document.GetLatestReportCollection()无论实用程序是类还是命名空间都是可访问的。更好的问题可能是,使用嵌套命名空间而不是使用由公共共享方法组成的不可继承类是否有好处。对于嵌套类型,必须声明包含类型才能访问它。这就是您的代码始终是Utility.Document.GetLatestReportCollection()。使用命名空间可以将其缩减为Document.GetLatestReportCollection()。虽然intellisense可以减少编写的代码,但对我来说这似乎是额外的噪音。我仍然不清楚为什么要在密封类和名称空间之间进行比较,第二个示例显然是一个嵌套类型,恰好使用了密封类。