次の方法で共有


方法: 拡張メソッドを呼び出す (Visual Basic)

拡張メソッドを使用すると、既存のクラスにメソッドを追加できます。 拡張メソッドを宣言してスコープに取り込んだ後は、拡張する型のインスタンス メソッドのように呼び出すことができます。 拡張メソッドを記述する方法の詳細については、「 方法: 拡張メソッドを記述する」を参照してください。

次の手順では、拡張メソッド PrintAndPunctuateを参照します。このメソッドを呼び出す文字列インスタンスの後に、2 番目のパラメーター puncに対して送信される値が表示されます。

Imports System.Runtime.CompilerServices

Module StringExtensions
    <Extension()>
    Public Sub PrintAndPunctuate(ByVal aString As String,
                                 ByVal punc As String)
        Console.WriteLine(aString & punc)
    End Sub

End Module

メソッドは、呼び出されたときにスコープ内にある必要があります。

拡張メソッドを呼び出すには

  1. 拡張メソッドの最初のパラメーターのデータ型を持つ変数を宣言します。 PrintAndPunctuateには、String変数が必要です。

    Dim example = "Ready"
    
  2. その変数は拡張メソッドを呼び出し、その値は最初のパラメーター aStringにバインドされます。 次の呼び出し文でReady?が表示されます。

    example.PrintAndPunctuate("?")
    

    この拡張メソッドの呼び出しは、1 つのパラメーターを必要とする String インスタンス メソッドの呼び出しと同じように見えます。

    example.EndsWith("dy")
    example.IndexOf("R")
    
  3. 別の文字列変数を宣言し、メソッドをもう一度呼び出して、任意の文字列で動作することを確認します。

    Dim example2 = " or not"
    example2.PrintAndPunctuate("!!!")
    

    今回の結果は、 or not!!!です。

次のコードは、単純な拡張メソッドの作成と使用の完全な例です。

Imports System.Runtime.CompilerServices
Imports ConsoleApplication1.StringExtensions

Module Module1

    Sub Main()

        Dim example = "Hello"
        example.PrintAndPunctuate(".")
        example.PrintAndPunctuate("!!!!")

        Dim example2 = "Goodbye"
        example2.PrintAndPunctuate("?")
    End Sub

    <Extension()>
    Public Sub PrintAndPunctuate(ByVal aString As String,
                                 ByVal punc As String)
        Console.WriteLine(aString & punc)
    End Sub
End Module

' Output:
' Hello.
' Hello!!!!
' Goodbye?

こちらも参照ください