Здравствуйте, bexab, Вы писали:
B>Здравствуйте, AndrewVK, Вы писали:
B>известны ли мотивы, запрещающие делать так ?
B>B>object o = delegate() { return 0; };
B>
B>Error => Cannot convert anonymous method block to type 'object' because it is not a delegate type
Потому что это анонимный метод а не делегат. Тебе же написали. Если за тебя компилятор делает некоторую работу, например, создает делегат, это еще ничего не значит. Ну например, один и тот же код:
var y=Array.Find(a, x => x==1);
[/с#]
Красиво - но обманчиво. Лямбда - не делегат, а анонимный метод. Уберем некоторый синтаксический сахар, получится:
[c#]
var y=Array.Find(a, new Predicate<int>(x=>x==1));
Синтаксический сахар шарпа не требует явное создание делегата. Оно это делает за нас.
соответсвенно, если мы хотим из метода сделать делегат, то его нужно создать:
object o=new Predicate<int>(x=>x==1);
Или
Predicate<int> b = (x => x == 2);
Разница между методом, и типизированным делегатом — большая

Просто иногда за нас эту разницу нивелирует компилятор.
... << RSDN@Home 1.2.0 alpha rev. 789>>