2017-11-18 167 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