Изменился ли .Net IL со времени .Net 2.0? - PullRequest
6 голосов
/ 07 июня 2009

До этого я слышал, что .Net 3.5 не вносил изменений в IL, в который он компилируется. После размышления над всеми функциями компилятора, которые я знаю, были представлены, на самом деле, кажется, что все они могут быть реализованы в одном и том же старом IL, но я не могу найти официальный источник, чтобы подтвердить это утверждение. Это правда?

Ответы [ 3 ]

5 голосов
/ 07 июня 2009

I думаю , что никаких изменений IL как таковых не было, но произошли значительные изменения в реализации CLR, чтобы повысить эффективность динамических методов и учесть дерево выражений. компиляция и т. д. Кажется, я помню, что в безопасности создания динамических методов произошли изменения, чтобы лямбда-выражения, генерирующие деревья выражений, могли вызывать частные методы для работы даже в средах с относительно низким уровнем доверия. Компилятор знает, что можно вызывать закрытый метод, потому что точка, в которой скомпилирован исходный код, имеет к нему доступ. Хотя доказать это сложно :) См. эту заметку Эрика Липперта .

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

.. и, как следствие, при желании вы можете использовать множество функций .NET 3.5 в проекте .NET 2.0, если используете последний компилятор:

  • Автоматические свойства
  • Методы расширения (требуется небольшой подвох)
  • Инициализаторы объектов
  • Вывод типа (ключевое слово var)
  • Лямбда-выражения
0 голосов
/ 07 июня 2009

Доставка CLR (версия 2.0.50727) не изменилась с .NET 2.0, поэтому ваш IL идентичен. (См. Также этот SO QA )

...