2017-01-12 6 views
1

Я пытаюсь преобразовать код C# в VB.Net. Я думаю, что я имею дело с лямбда-выражениями здесь, но я не уверен, как это сделать. Я новичок в C#, и это немного более продвинуто, чем могут обрабатывать бесплатные онлайн-конвертеры.Преобразование выражения C# Lambda в VB.net

Преобразование кода в VB.net для меня было бы здорово, но то, что я действительно искал кто-то объяснить, что этот код пытается сделать (научить парня ловить рыбу и все, что ...)

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

BTW, объект 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(...)) 

Дописывает отформатированную строку в RichTextBox

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

Объявляет лямбда-выражения, который не принимает никаких параметров и вызывает функцию AppendText.

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

Объявляет вторую функцию лямбда, принимая 2 параметра (name и message) и вызвать Invoke функцию с предыдущим лямбда-выражения. Я предполагаю, что Invoke фактически выполнит выражение лямбда.

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

Опять же, не знаком с SignalR, но мои образованные бы предположить, что это прикрепление предыдущего выражения лямбды на AddMessage событие, таким образом, что всякий раз, когда AddMessage происходит, ваша функция лямбды будет выполнять, в результате чего имени и сообщение из события AddMessage, которое должно быть добавлено в ящик RichText через функцию Invoke (возможно, чтобы элемент пользовательского интерфейса был изменен на соответствующую нить?)

В любом случае, надеюсь, это поможет вам разобрать линию. Не могу помочь вам конвертировать его, хотя>. <

(Если я сказал что-то неправильно, то пожалуйста, дайте мне знать, и я буду удалять или корректировать заявления обижая)

+0

спасибо! Сегодня я чему-то научился! –

0

В.Б. эквивалент:

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

Большое спасибо! Сегодня я чему-то научился! –