vb.net - VB.NET的MsgBox函数在哪里定义的?

标签 vb.net clr

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

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

MsgBox 是在类中定义的吗?我不需要引用静态类或从另一个类继承。我什至不需要导入 namespace 。我确实找到了这个link来自 msdn。但我的问题仍然是,它在哪里定义以及 CLR 如何加载函数?

最佳答案

如果您在 Visual Studio 中输入 MsgBox 并按 F12,您将看到它位于 Microsoft.VisualBasic 命名空间中的交互模块。

事实上,此信息也可以在您引用的 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 类)。

关于vb.net - VB.NET的MsgBox函数在哪里定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315926/

相关文章:

.net - 如何以编程方式关闭 TFS 工作项

mysql - VB.NET MySQL - 数据表返回空白行而数据库没有数据

.net - 通过升级 .NET Framework 提高性能

asp.net - 在 SQL Server 2012 中创建 .NET Framework v.2.0 程序集

c# - 调用无参数构造函数后具有引用类型成员的 c# 结构的相等性和 gethashcode 覆盖

c# - 如果我将对事件对象的引用复制到另一个对象并随后更改事件对象会怎样?

vb.net 服务器 - 多个客户端不断处理不同的信息

vb.net - 无法在 vb 6 项目中添加由 vb.net 创建的 dll

c# - 为什么我们可以从VB中的另一种形式调用没有共享关键字的sub、函数

c# - 有什么方法可以限制类型变量可能持有的类型?