这实际上更像是一个学术问题,但这个函数定义在哪里?在.NET中,我习惯于以面向对象的方式工作。但是,如果我按如下方式定义VB.NET类:
Public Class foo
Public Sub showmessagebox()
Dim i As Integer
i = MsgBox("Message")
End Sub
End Class
MsgBox是否在类中定义?我不需要引用静态类或从其他类继承。我甚至不需要导入命名空间。我确实从msdn找到了这个link。但我的问题仍然存在,这个定义在哪里以及CLR如何加载函数?
答案 0 :(得分:3)
如果您在Visual Studio中输入MsgBox
并点击 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
类)。