2015-07-06 9 views
0

Я собираюсь хотя бы C# исходный код и наткнулся на этот фрагмент кода, который я не понимаю.Странное выражение лямбда

someVariable += (s,_) => this.Close(); 

Что здесь происходит?

+0

подчеркивание является допустимым именем переменной, оно должно означать, скорее всего, переменную, которая не используется. – thumbmunkeys

+0

'_' является допустимым именем переменной. Например: 'var _ = 2;' – Jonesopolis

+1

Вы спрашиваете о символах подчеркивания, или вы спрашиваете о '+ ='? (Это подписка на события). – vcsjones

ответ

2

Как и другие уже говорилось, s и _ являются переменными, которые используются в качестве параметра для анонимного метода.
Для вашего понимания, это

someVariable += (s,_) => this.Close(); 

в значительной степени так же, как

someVariable += AnonymousMethod; 

private void AnonymousMethod(object s, object _) 
{ 
    this.Close(); 
} 

Типы параметра для метода автоматически выводится по определению события someVariable. Я использовал object, так как мы не знаем, как определено событие.

2

s и _ только параметры, которые не используются в этой лямбда-функции.

6

Подчеркнутое имя является допустимым именем переменной. Это должно означать, скорее всего, переменную, которая не используется.

Я использую его, как это выразить, что переменные не используются в дальнейшем:

someVariable += (_,__) => this.Close(); 
+0

Я действительно не понимаю, есть ли ссылка для этого, чтобы я мог учиться? Я обычно использую лямбда для списков, таких как функции (выберите, где, groupby и т. Д.) –

+2

Является ли undercore источником путаницы или это общее выражение формы: 'someVariable + = (s, e) => this.Close(); '? – thumbmunkeys

+1

Надеюсь, у вас никогда не будет слишком много неиспользуемых параметров ... '_, __, ___, ____' :-) – xanatos

Смежные вопросы