2017-11-18 163 views
0

我想转换C#Lambda表达式到VB.Net

cfind.OnResponseReceived = (DicomCFindRequest rq, DicomCFindResponse rp) => { 
    Console.WriteLine("Study UID: {0}", rp.Dataset.Get<string>(DicomTag.StudyInstanceUID)); 
}; 

到VB.Net

但是, 既不

AddHandler cfind.OnResponseReceived, AddressOf onResponse 

也不

AddHandler cfind.OnResponseReceived, Sub(rq, rp) 
     onCFindResponse(rq, rp) 
End Sub 

事作品.. 我该如何转换它?

+0

的作用,并不等同 - 你重构原始的C#Console.WriteLine行动统一到一个单独的'Sub'? – StuartLC

+0

这是一项任务,而不是事件订阅。注意=,没有+ =。因此使用AddHander是不正确的。赋值在VB.NET中的作用相同,您可以使用=。使用Sub,而不是Function。 –

回答

2

这应该是对应的VB.NET:要执行

cfind.OnResponseReceived = Sub(rq As DicomCFindRequest, rp As DicomCFindResponse) 
    Console.WriteLine("Study UID: {0}", rp.Dataset.[Get](Of String)(DicomTag.StudyInstanceUID)) 

End Sub 
+0

由于该方法不返回任何东西,它应该是一个'Sub',而不是'Function'。 –

+0

@visualvincent你是对的,谢谢。更新了答案。 – CodingYoshi