Есть такой косяк. Кто-то воде даже пылатся замазать, но так, значит, до конца и не искоренил.
O>Можно ли это както обойти ? или это баг ? или так правилнее ???
Не обрашай внимание. JIT это выбрасывает в лучшем виде. Так что на производительности это не отразится. Ну, будет пара лишних байт в сборке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Othello, Вы писали:
O>Можно ли это както обойти ? или это баг ? или так правилнее ???
Кстати. На самом деле генерируемый код в релизе практически идентичен шарповскому. А приведённое поведение проявляется только в Debug. Но в Debug делаются специальные трансформации практически на всех стадиях, в частности, для того, чтобы можно было удобнее расставить точки останова для match и т.п. Так что на генерируемый в дебаге код лучше вообще не смотреть.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Othello, Вы писали:
O>Можно ли это както обойти ? или это баг ? или так правилнее ???
Я бы вообще смотрел (и смотрю) на генерируемый Reflector'ом код с заметной долей скептицизма. Ибо рефлектор сам занимается оптимизацией кода.
Получаемый код сильно зависит от параметра настроек рефлектора Optimization (none, .NET 1.0, .NET 2.0 и .NET 3.0).
Как пример скажу, что рефлектор выкидывает локальную переменную, если она используется один раз и заменяет её инициализатором. Даже при отключенной оптимизации.
SomeClass a=tmp.Current;
a.Run();
будет заменён на
SomeClass a;
tmp.Current.Run();
В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.