Re[8]: [C#, Этюд] base.ToString
От: _WerWolf_  
Дата: 14.04.12 06:58
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Здравствуйте, namespace, Вы писали:


Ф>>>студия тоже выдаёт предупреждение — это ничего не значит.

Ф>>>каков "верный код"?
N>>В VS 2010 выдает "<>n__FabricatedMethod1", при компиляции никаких предупреждений.

Ф>похоже на баг компилятора


А если поменять base на this?

Тут все понятно на самом деле, любая лямда — это сгенерированный компилятором класс с полями из захваченных переменных и методом с телом лямды.
Для досткпаю к this сгенерированный класс просто захватывает переменную this. Для base он так поступить не может, потому что ToString виртуальный метод. Т.е. захват для base не работает и компилятор не зря по этому поводу ругается.
Я в таких случаях создаю отдельный метод который стучится к base.

В общем нужно в ILDasm запускать и смотреть куда добавился сгенерированный метод FactoryMethod.
У меня компа под рукой нет, кто может заглянуть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.