さて、VBプロジェクトをC#に変換しています。ここまでは順調ですね。問題はデリゲート/アクションが2つの言語間でかなり異なっていることです。違いを解決するためには苦労しています。VB.NETコードをC#に変換:ラムダ式をデリゲート型ではないため 'Delegate'型に変換できません
Private methods As New Dictionary(Of Integer, [Delegate])
Private Sub Register(id As Integer, method As [Delegate])
methods.Add(id, method)
End Sub
Private Sub LogName(name As String)
Debug.Print(name)
End Sub
Private Sub Setup()
Register(Sub(a As String) LogName(a))
End Sub
およびC#
private Dictionary<int, Delegate> methods;
private void Register(int id, Delegate method)
{
methods.Add(id, method);
}
private void LogName(string name)
{
Debug.Print(name);
}
private void Setup()
{
Register((string a) => LogName(a));
}
上記最後の行はCS1660 Cannot convert lambda expression to type 'Delegate' because it is not a delegate type
エラーの原因となっています。
あなたは 'レジスタ(新しいアクション((文字列A)しようとしたんでした=> LogName(a);))); ' –
はい、いいえ、行かないでください。同じエラーのバリエーション。 –