我一直在研究这个问题,但我希望社区能够就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中的一个函数?
答案 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混淆,这确实是一个函数