Я ищу хорошее объяснение, почему одна часть кода не компилируется, а другая компилируется просто.
Не удается:
richTextBox1.Invoke(new MethodInvoker((() => { richTextBox1.AppendText("test"); })));
Дает ошибку
Ожидаемое имя метода
в открывающей скобке справа после MethodInvoker(
. Видимо, я не могу обернуть свои лямбда-выражения в круглые скобки.
Собирает:
richTextBox1.Invoke(new MethodInvoker(() => { richTextBox1.AppendText("test"); }));
Вопросы: почему?
Я всегда считал само собой разумеющимся, что я мог бы обернуть любой параметр метода в круглые скобки, если захочу, но, по-видимому, это не так, как с лямбда-выражениями. Я понимаю, что они несколько особенные, но я до сих пор не вижу достаточной причины для этого. Может быть, я ничего не понимаю о синтаксисе. Я действительно хотел бы получить его.
Кстати, это представлено в VS2008,.NET 3.5 SP1, я еще не тестировал его в VS2010 и .NET 4.