2

这实际上更像是一个学术问题,但是这个函数是在哪里定义的呢?在 .NET 中,我习惯于以面向对象的方式工作。但是,如果我按如下方式定义 VB.NET 类:

Public Class foo
    Public Sub showmessagebox()
        Dim i As Integer
        i = MsgBox("Message")
    End Sub
End Class

MsgBox 是在一个类中定义的吗?我不需要引用静态类或从另一个类继承。我什至不需要导入命名空间。我确实从 msdn找到了这个链接。但我的问题仍然存在,这是在哪里定义的,CLR 是如何加载一个函数的?

4

1 回答 1

3

如果您进入MsgBoxVisual Studio 并点击F12,您将看到它在Microsoft.VisualBasic命名空间中,在Interaction模块中。

实际上,您引用的 MSDN 页面底部也提供了此信息(尽管有点隐藏):

命名空间:Microsoft.VisualBasic
模块:交互
程序集:Visual Basic 运行时库(在 Microsoft.VisualBasic.dll 中)

如果您查看References项目属性部分,您会看到Microsoft.VisualBasic命名空间是自动导入的。由于Interaction是一个模块,您可以使用它的方法而无需限定模块名称(与类的静态/共享方法相反)。

附带说明:如果您将 Microsoft.VisualBasic.dll 的引用添加到 C# 项目,您也可以Microsoft.VisualBasic.Interaction.MsgBox("Hello World");在那里使用(尽管大多数 C# 用户更喜欢使用MessageBox该类)。

于 2012-04-25T12:49:21.193 回答