VB.NET - MessageBox,这是一个函数吗?

时间:2012-07-21 17:17:17

标签: .net vb.net winapi messagebox

我一直在研究这个问题,但我希望社区能够就VB.NET中提供的MessageBox class提供一些意见。

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

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

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

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

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

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

4 个答案:

答案 0 :(得分:4)

你正在寻找不同的背景。在“普通”.NET中,它是一个类 - System.Windows.Forms.MessageBox

引用的文档是关于User32.dll中定义的本机MessageBox函数。它完全是分开的。

当然,在某些.NET类型或其他类型中,还可以MessageBox方法。基本上,相同(不合格)的名称在不同的上下文中表示不同的东西是完全合法的。

答案 1 :(得分:3)

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

更常见的是在带有Module的VB.NET中处理。但这是一个非常具体的VB.NET特性,这个类是框架的一部分,可以被任何语言使用。所以它只是一个类,因为CLR要求方法是类的一部分。

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

首先,MessageBox .ne t类与MessageBox Win32 API函数不同。

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

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