こんにちは
タイトルの技法について教えてください
メソッド内の一部のコードを呼び出し時に指定するような技法があったと記憶していますが
名称がわからず検索うまくできません
イメージ
Private Function Sample(コードを引き渡す型) As Integer
Dim A as Integer = 1
Dim B as Integer = 2
Dim C as Integer = 3
可変部分のコード
Return C
End Sub
呼び出し
Sample(C=A+B)
Sample(C=A-B)
' Func(Of Integer, Integer, Integer)はInteger2つを引数にとりIntegerを返すデリゲート Function Sample(method As Func(Of Integer, Integer, Integer)) As Integer Return method(1, 2) End Function
' Function/Subで始まるのがラムダ式 ' a, bの型はSampleの引数がFunc(Of Integer, Integer, Integer)であることから推論される Dim c As Integer c = Sample(Function(a, b) a + b) c = Sample(Function(a, b) a - b)
Sub Main() Dim C1 As Integer = Sample("A+B") Dim C2 As Integer = Sample("A-B") End Sub
Function Sample(Expression As String) As Integer Dim A As Integer = 1 Dim B As Integer = 2 Dim tbl As New DataTable() tbl.Columns.Add("A", GetType(Integer)) tbl.Columns.Add("B", GetType(Integer)) tbl.Columns.Add("C", GetType(Integer), Expression) tbl.Rows.Add(A, B).AcceptChanges() Return CInt(tbl.Rows(0)!C) End Function
------------
Function Sample(Proc As Func(Of Integer, Integer, Integer)) As Integer Dim A As Integer = 1 Dim B As Integer = 2 Return Proc(A, B) End Function
Sub Main() Dim C1 As Integer = Sample(Function(x, y) x + y) Dim C2 As Integer = Sample(Function(x, y) x - y) End Sub