Являются ли объекты лямбда-выражения в C # объектами? - PullRequest
5 голосов
/ 25 июня 2009

В C # являются ли объекты лямбда-выражений объектами? Если да, то что это за объект?

Ответы [ 4 ]

16 голосов
/ 25 июня 2009

Сами лямбда-выражения существуют только в исходном коде. У них самих нет типа, поэтому компилятор всегда настаивает на том, что они конвертируются в определенный тип.

Вот почему этот код не компилируется:

// No idea what type to convert to!
object x = y => y.Length;

Но это так:

Func<string, int> x = y => y.Length;

Лямбда-выражения всегда преобразуются в или тип делегата или тип дерева выражений. Точно так же анонимные методы всегда преобразуются в тип делегата.

12 голосов
/ 25 июня 2009

Да, лямбда-выражения преобразуются либо в delegate, либо в дерево выражений - оба объекта являются объектами.

4 голосов
/ 25 июня 2009

Лямбда-операции в Linq создают так называемые деревья выражений. Вы можете прочитать немного об этом здесь .

0 голосов
/ 25 июня 2009

Это анонимная функция, которая должна соответствовать какому-то делегату. * 1002 MSDN * Так что, на самом деле, они являются экземплярами некоторых типов делегатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...