Я собираюсь хотя бы C# исходный код и наткнулся на этот фрагмент кода, который я не понимаю.Странное выражение лямбда
someVariable += (s,_) => this.Close();
Что здесь происходит?
Я собираюсь хотя бы C# исходный код и наткнулся на этот фрагмент кода, который я не понимаю.Странное выражение лямбда
someVariable += (s,_) => this.Close();
Что здесь происходит?
Как и другие уже говорилось, s
и _
являются переменными, которые используются в качестве параметра для анонимного метода.
Для вашего понимания, это
someVariable += (s,_) => this.Close();
в значительной степени так же, как
someVariable += AnonymousMethod;
private void AnonymousMethod(object s, object _)
{
this.Close();
}
Типы параметра для метода автоматически выводится по определению события someVariable
. Я использовал object
, так как мы не знаем, как определено событие.
s
и _
только параметры, которые не используются в этой лямбда-функции.
Подчеркнутое имя является допустимым именем переменной. Это должно означать, скорее всего, переменную, которая не используется.
Я использую его, как это выразить, что переменные не используются в дальнейшем:
someVariable += (_,__) => this.Close();
Я действительно не понимаю, есть ли ссылка для этого, чтобы я мог учиться? Я обычно использую лямбда для списков, таких как функции (выберите, где, groupby и т. Д.) –
Является ли undercore источником путаницы или это общее выражение формы: 'someVariable + = (s, e) => this.Close(); '? – thumbmunkeys
Надеюсь, у вас никогда не будет слишком много неиспользуемых параметров ... '_, __, ___, ____' :-) – xanatos
подчеркивание является допустимым именем переменной, оно должно означать, скорее всего, переменную, которая не используется. – thumbmunkeys
'_' является допустимым именем переменной. Например: 'var _ = 2;' – Jonesopolis
Вы спрашиваете о символах подчеркивания, или вы спрашиваете о '+ ='? (Это подписка на события). – vcsjones