2

これは実際にはもっと学術的な質問ですが、この関数はどこで定義されていますか?.NET内では、オブジェクト指向の方法で作業することに慣れています。ただし、VB.NETクラスを次のように定義すると、次のようになります。

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

MsgBoxはクラスで定義されていますか?静的クラスを参照したり、別のクラスから継承したりする必要はありません。名前空間をインポートする必要すらありません。私はmsdnからこのリンクを見つけました。しかし、私の質問は残っています。これはどこで定義され、CLRはどのように関数をロードするのでしょうか。

4

1 に答える 1

3

MsgBoxVisual Studio に入って を押すと、モジュール内の名前空間にF12あることがわかります。Microsoft.VisualBasicInteraction

実際、この情報は、参照した MSDN ページの下部にもあります (少し隠されていますが)。

名前空間: Microsoft.VisualBasic
モジュール: 相互作用
アセンブリ: Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll 内)

プロジェクト プロパティのセクションを調べると、名前空間が自動的にインポートされReferencesていることがわかります。Microsoft.VisualBasicはモジュールであるためInteraction、(クラスの静的/共有メソッドとは対照的に) モジュール名を修飾する必要なく、そのメソッドを使用できます。

補足: Microsoft.VisualBasic.dll への参照を C# プロジェクトに追加すると、Microsoft.VisualBasic.Interaction.MsgBox("Hello World");そこでも使用できます (ただし、ほとんどの C# ユーザーはMessageBoxクラスの使用を好みます)。

于 2012-04-25T12:49:21.193 に答える