2012-04-25 146 views
2

這實際上更像是一個學術問題,但是這個函數在哪裏定義?在.NET中,我習慣於以面向對象的方式工作。但是,如果我定義如下的VB.NET類:VB.NET的MsgBox函數在哪裏定義?

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

MsgBox是在類中定義的嗎?我不需要引用靜態類或從另一個類繼承。我甚至不需要導入命名空間。我確實從msdn找到了這個link。但是我的問題仍然存在,這個定義在哪裏,CLR如何加載一個函數?

回答

3

如果輸入MsgBox到Visual Studio和命中F12,你會看到它是在Microsoft.VisualBasic命名空間中,Interaction模塊中。

事實上,這些信息也可以(雖然有點隱藏)在你所引用的MSDN的頁面的底部:

命名空間:Microsoft.VisualBasic程序
模塊:互動
程序集:Visual Basic運行庫(在Microsoft.VisualBasic.dll中)

如果您查看項目屬性的References部分,則會看到自動導入Microsoft.VisualBasic名稱空間。由於Interaction是一個模塊,因此可以使用它的方法而不必限定模塊名稱(與類的靜態/共享方法相反)。注意:如果您將Microsoft.VisualBasic.dll的引用添加到C#項目中,那麼您也可以在那裏使用Microsoft.VisualBasic.Interaction.MsgBox("Hello World");(儘管大多數C#用戶更喜歡使用MessageBox類)。

+0

謝謝Heinzi,Modules是這裏的關鍵詞。顯然,我已經在C#中,並在VB.NET中使用了太久。 – LJM 2012-04-25 12:54:12