2017-01-12 1 views
1

일부 C# 코드를 VB.Net로 변환하려고합니다. 나는 여기에 람다 식을 다루고 있다고 생각하지만, 이것을 변환하는 방법을 모르겠습니다. 저는 C#을 처음 접했고 무료 온라인 변환기가 처리 할 수있는 것보다 조금 더 발전했습니다.C# 람다 식을 VB.net으로 변환

나를 위해 VB.net 코드를 변환하는 것이 좋겠지 만, 내가 정말로 찾고있는 것은이 코드가 무엇을 시도하는지 설명하는 누군가이다. (물고기를 잡으려고 사람에게 가르치고 ...)

HubProxy.On<string, string>("AddMessage", (name, message) =>  
                this.Invoke((Action)(() =>  
                    RichTextBoxConsole.AppendText(String.Format ("{0}: {1}" + Environment.NewLine, name, message))))); 

현재, HubProxy 개체는 SignalR 허브입니다.

감사합니다, kayaking_jeff

답변

1

내가 SignalR 특히 익숙하지 해요,하지만 여기가 문자열로 밖으로

String.Format("{0}: {1}" + Environment.NewLine, name, message) 

대체품을 변수 내부에서 작업 일어나고있는 모습입니다. name은 {0} 대신 사용하고 message은 {1} 대신 사용합니다. new String(name + ": " + message + Environment.NewLine)

RichTextBoxConsole.AppendText(String.Format(...)) 

이 매개 변수를 사용하지 않는 및 AppendText 함수를 호출하는 람다 식을 선언하는를 RichTextBox

(Action)(() => RichTextBoxConsole.AppendText(...)) 

으로 포맷 된 문자열을 추가 동일하게이 될 것입니다.

(name, message) => this.Invoke((Action)(...)) 

2 개 파라미터 (namemessage)을 복용하고 이전 람다 식으로 Invoke 함수를 호출하는 제 람다 함수를 선언. 나는 Invoke이 실제로 람다 표현식을 실행할 것이라고 추정한다.

HubProxy.On<string, string>("AddMessage", (name, message) => ...); 
다시

, SignalR에 익숙하지 않은,하지만 내 추측이이 AddMessage가 발생할 때마다, 당신의 람다 함수가 실행되도록, AddMessage 이벤트에 이전 람다 식을 부착 이름과 메시지의 원인이되는 것 Invoke 함수를 통해 RichText 상자에 추가 할 AddMessage 이벤트의 내용 (적절한 스레드에서 UI 요소가 수정되었는지 확인하기 위해)

어쨌든이 구문을 사용하면 선을 구문 분석하는 데 도움이됩니다. 그래도 변환하는 데 도움을 줄 수는 없습니다.> <

+0

대단히 감사합니다! 나는 오늘 무언가를 배웠다! –

0

VB는 상응하는이 (내가 뭔가 잘못 알려 주시기 바랍니다 내가 제거하거나 잘못된 문을 조정할 것이라고 말했다 경우) :

HubProxy.On(Of String, String)("AddMessage", Function(name, message) _ 
    Me.Invoke(CType(Sub() _ 
    RichTextBoxConsole.AppendText(String.Format("{0}: {1}" & Environment.NewLine, name, message)), Action))) 

에 대한 설명을 참조 타일러의 대답 논리.

+0

대단히 감사합니다! 나는 오늘 무언가를 배웠다! –