拡張メソッドとは?
とっても簡単いえば、
既存のクラスをそのままに、そのクラスに独自のプラスαのメソッドを追加でき、そのメソッドを通常のクラスの関数と同様に使える関数、
と言うものです。
では、Stringに何を聞かれても「yes」と出力するprintYes()というメソッドを作ってみましょう。
Module StringYes <System.Runtime.CompilerServices.Extension()> _ Public Sub PrintYes(ByVal A As String, inputvalue As String) Select Case A Case "夕ご飯を" Console.WriteLine("Yes") Case Else Console.WriteLine("No") End Select End Sub End Module Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim mystring1 As String = "夕ご飯を" mystring1.PrintYes("食べる?") Dim mystring2 As String = "朝ご飯を" mystring2.PrintYes("食べない?") End Sub
へー的に理解は可能のようです。
要点はモジュールに定義すること。
<System.Runtime.CompilerServices.Extension()> _を書くこと。
後は、
Public Sub 拡張メソッド名(ByVal その拡張メソッドを呼び出す任意の実態名で、何でも良い AS 拡張する型クラス名,パラメータ,パラメータ,・・・)
実際の処理
End Sub
なわけです。
しかし、これだと、上記のAggregateの拡張メソッドとは異なる部分があるようです。
近づけて改造してみたいのですが、
次の疑問はジェネリックや、デリゲートです。
ジェネリックとは?