【问题标题】:VB.NET - MessageBox, is this a function?VB.NET - MessageBox,这是一个函数吗?
【发布时间】:2012-07-21 17:17:17
【问题描述】:

我一直在研究这个,但我希望社区提供一些关于 VB.NET 中提供的 MessageBox class 的意见。

从我的观点和目前的理解来看,我将MessageBox 视为Class,主要是因为在VS2010 中将其显示为一个类。我看到我们在这个类和属性中有方法。为什么很多网站、教程、书籍都将其称为函数?甚至 MSDN 也将其称为 MessageBox 函数。仅仅是因为这是 WINAPI 的一部分吗?

现在出现的另一个问题是,我仔细研究了 VB.NET 中的 MessageBox 类,为什么我们不必在使用之前创建 Messagebox 类型的对象。看来我们可以只调用 Messagebox 类并调出“Show”方法...

我仍处于完全理解 OOP 概念的初级阶段,我不介意关于这个特定主题的技术解释。

我正在阅读 MSDN 页面上的 MessageBox 功能,这是最初触发我提出这个问题的原因。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx

最后,我的问题: 为什么当 VS2010 intellisense 将“MessageBox”显示为一个类时,它在 VB.NET 中被视为一个函数?

【问题讨论】:

    标签: .net vb.net winapi messagebox


    【解决方案1】:

    您正在查看不同的上下文。在“普通”.NET 中,它是一个类 - System.Windows.Forms.MessageBox

    提到的文档是关于在 User32.dll 中定义的原生 MessageBox 函数。它是完全独立的。

    当然,也可以在某些 .NET 类型或其他类型中声明 MessageBox 方法。基本上,同一个(非限定)名称在不同的上下文中表示不同的东西是完全合法的。

    【讨论】:

      【解决方案2】:

      这不是传统意义上的一类。它根本不存储任何状态,它没有任何属性。只是方法,它们都是共享的。

      这在 VB.NET 中更典型地使用模块来处理。但这是一个高度特定的 VB.NET 功能,这个类是框架的一部分,并且可以被任何语言使用。所以它只是一个类,因为 CLR 要求方法是类的一部分。

      您仍然可以使用 MsgBox() 函数。继承自 VB6,与 MessageBox 做同样的事情,并且在全局命名空间中可用。就像模块中的函数一样。

      【讨论】:

        【解决方案3】:

        你引用的页面不是引用.NET框架的MessageBox类,而是引用了windows api的MessageBox函数。这是两个不同的事物,即使它们具有相同的名称并处理相同的事物。事实上,如果 .NET 的 MessageBox 类的静态方法 Show 在内部编组对 windows api 的 MessageBox 函数的调用,我不会感到惊讶。

        至于第二位,你可以调用MessageBox.Show,因为show方法是静态的,这意味着你不需要类的实例来调用它。

        【讨论】:

          【解决方案4】:

          首先MessageBox .net 类不同于MessageBox Win32 API 函数。

          .net 中的 MessageBox 类仅具有允许您向用户显示消息的有意义的静态方法。并且调用类的静态方法不需要创建实例。

          也没有人将 MessageBox .NET 视为一个函数,他们只将 MessageBox.Show 方法视为一个函数。您是否将它与 Visual Basic 中的 MsgBox 混淆了,这确实是一个函数

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-11
            • 2016-12-10
            • 1970-01-01
            • 1970-01-01
            • 2016-03-14
            • 2013-02-09
            相关资源
            最近更新 更多