2

我一直在这里和其他地方寻找答案,但我还没有找到确切的答案。

我对 C# 很陌生。在 VB.NET 中,您可以定义一个模块,就像一个类一样,它有一些限制,也有一些好处。它的一大好处是,如果您已导入命名空间(即 c# 中的“使用”),您可以全局访问它的所有成员。例如:

Private Sub Test()
    MsgBox(Now)
End Sub

在上面的方法中,MsgBox 是 Microsoft.VisualBasic.Interaction 模块中的一个方法,Now 是 Microsoft.VisualBasic.DateAndTime 模块中的一个属性。我不必限定对其中任何一个的调用才能使用它们,尽管我可以:

Private Sub Test()
    Microsoft.VisualBasic.Interaction.MsgBox(Microsoft.VisualBasic.DateAndTime.Now)
End Sub

通过使用实用方法和属性构建自己的模块,我一直在自己的项目中使用此功能。它非常非常有用。C#中是否有等价物?

4

1 回答 1

10

VB.NET 中的模块与 C#中的静态类完全等效。唯一的区别是 VB.NET 编译器默认将你的声明放在全局命名空间的 Module 中。这是 C# 团队不赞成的做法,有充分的理由,当您在其余代码中引用静态类的成员时,您必须使用类名。换句话说,您必须使用 Math.Pi,而不仅仅是 Pi。

不必这样,您可以将模块放在命名空间中:

Namespace Contoso.Foobar
    Module MyModule
        '' etc..
    End Module
End Namespace

现在是同样的事情。

于 2013-09-27T17:52:21.967 回答