关于clr:VB.NET的MsgBox函数定义在哪里?

Where is VB.NET's MsgBox function defined?

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

1
2
3
4
5
6
Public Class foo
    Public Sub showmessagebox()
        Dim i As Integer
        i = MsgBox("Message")
    End Sub
End Class

MsgBox是在类中定义的吗?我不需要引用静态类或从其他类继承。我甚至不需要导入名称空间。我确实从msdn找到了这个链接。但我的问题是,这个定义在哪里,以及clr是如何加载函数的?


如果您在Visual Studio中输入MsgBox并点击f12,您将看到它在Microsoft.VisualBasic命名空间中,在Interaction模块中。

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

Namespace: Microsoft.VisualBasic
Module: Interaction
Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

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

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