Рассмотрим следующее лямбда-выражение, которое назначается событию.
foo.BarEvent += (s, e) => if (e.Value == true) DoSomething();
Это выглядит довольно прямолинейно и состоит только из одной строки кода. Итак, почему я получаю следующие 2 ошибки от отладчика?
Недопустимый термин выражения 'if'
В качестве оператора
можно использовать только присвоение, вызов, приращение, декремент, ожидание и новые объектные выражения.
Чтобы устранить эту проблему, все, что вам нужно сделать, это обернуть оператор if
в скобках.
foo.BarEvent += (s, e) => { if (e.Value == true) DoSomething(); };
//Errors now disappear!
Я понимаю, что говорят эти сообщения об ошибках. То, что я не понимаю, является причиной того, что оператор с одним условием if
будет проблемой для компилятора и почему первое назначение лямбда считается сломанным.
Может кто-нибудь объяснить проблему?