拡張メソッドを使用すると、既存のクラスにメソッドを追加できます。 拡張メソッドを宣言してスコープに取り込んだ後は、拡張する型のインスタンス メソッドのように呼び出すことができます。 拡張メソッドを記述する方法の詳細については、「 方法: 拡張メソッドを記述する」を参照してください。
次の手順では、拡張メソッド 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
メソッドは、呼び出されたときにスコープ内にある必要があります。
拡張メソッドを呼び出すには
拡張メソッドの最初のパラメーターのデータ型を持つ変数を宣言します。
PrintAndPunctuate
には、String変数が必要です。Dim example = "Ready"
その変数は拡張メソッドを呼び出し、その値は最初のパラメーター
aString
にバインドされます。 次の呼び出し文でReady?
が表示されます。example.PrintAndPunctuate("?")
この拡張メソッドの呼び出しは、1 つのパラメーターを必要とする String インスタンス メソッドの呼び出しと同じように見えます。
example.EndsWith("dy") example.IndexOf("R")
別の文字列変数を宣言し、メソッドをもう一度呼び出して、任意の文字列で動作することを確認します。
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?
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET