2012-07-21 70 views
0

我一直在研究這個,但我想從社區的一些輸入問候在VB.NET提供的MessageBox classVB.NET - MessageBox,這是一個函數嗎?

從我的觀點和目前的瞭解,我看到MessageBoxClass,主要是因爲在VS2010中顯示它爲一個類。我看到我們有這個類和屬性中的方法。怎麼會有很多網站,教程,書叫這個函數?即使MSDN稱它爲MessageBox函數。是因爲這是WINAPI的一部分嗎?

現在出現的另一個問題是,我看了一下VB.NET中的MessageBox類更近一些,我們怎麼在使用它之前不必創建Messagebox類型的對象。看來,我們可以只是調用Messagebox類並調出「顯示」方法...

我仍處於完全理解OOP概念的初級階段,我不會介意技術上的解釋這個特別的話題。

我正在閱讀MSDN頁面的MessageBox函數,這是最初觸發我問這個問題的原因。

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

總之,我的問題: 爲什麼「消息框」認爲VB.NET一種功能,當VS2010的智能感知表明它作爲一個類?

回答

4

您正在查看不同的環境。在「正常」.NET中,它是一個類 - System.Windows.Forms.MessageBox

提到的文檔是關於在User32.dll中定義的原生MessageBox函數。它完全獨立。

當然,還有可能是也可能是MessageBox在某些.NET類型或其他類型中聲明的方法。基本上,對於同一個(不合格)名稱來說,在不同情況下意味着不同的事情是完全合法的。

+3

@Downvoter:關心評論? – 2012-07-21 22:11:19

1

首先MessageBox .ne t類不同於MessageBox Win32 API函數。

.net中的MessageBox類只具有有意義的靜態方法,允許您向用戶顯示消息。要調用一個類的靜態方法,你不需要創建一個實例。

也沒有人認爲MessageBox .NET是一個函數,它們只考慮MessageBox.Show方法。您是否將它混淆到Visual Basic中的MsgBox這確實是一個函數

2

您引用的頁面沒有引用.NET框架的MessageBox類,它引用了Windows API的MessageBox函數。這是兩件不同的事情,即使它們具有相同的名稱並處理同樣的事情。事實上,如果.NET的MessageBox類的靜態方法Show在內部編組調用Windows api的MessageBox函數,我不會感到驚訝。

至於第二位,您可以調用MessageBox.Show,因爲show方法是靜態的,這意味着您不需要該類的實例來調用它。

3

傳統意義上的單詞並不多。它根本不存儲任何狀態,它沒有任何屬性。只是方法,它們都是共享的。

哪一個更典型的處理在VB.NET與模塊。但這是一個非常具體的VB.NET特性,這個類是框架的一部分,可以被任何語言使用。所以它只是一個類,因爲CLR要求方法是類的一部分。

您仍然可以使用MsgBox()函數。繼承自VB6,與MessageBox完全相同,並且在全局名稱空間中可用。就像模塊中的功能一樣。