私はVB.Net4を使用しており、次の署名を持つクラスを正常に使用しています。
Sub Register(Of TMessage)(recipient As Object、action As System.Action(Of TMessage))
VBのラムダについて学びたいので、現在のコードを単純化できるかどうかを確認したいと思いました。
現在:クラスのコンストラクターに次のものがあります(わかりやすくするために簡略化されています)
Public Sub New()
Dim myAction As New Action(Of String)(AddressOf HandleMessage)
Messenger.Default.Register(Of [String])(Me, myAction)
End Sub
そして、クラスの後半では、次のようになります。
Private Function HandleMessage(sMsg As String)
If sMsg = "String Value" Then
If Me._Selection.HasChanges Or Me._Selection.HasErrors Then
Return True
End If
Return False
Else
Return False
End If
End Function
質問:これをC#のようにラムダに単純化する方法はありますか?コンストラクターでMyAction変数を宣言する必要はありませんが、文字列値をレジスタサブでHandleMessage関数 " inline "に渡すだけですか?(私はそれが理にかなっていることを願っています)