Как просмотреть вывод синтаксического сахара в компиляторе c # - PullRequest
4 голосов
/ 09 февраля 2011

Я смотрю, есть ли метод или инструмент, чтобы посмотреть, как такие вещи, как замыкания или выражения запроса, создаются компилятором c # "под капотом". Я заметил, что многие посты в блогах, посвященные этим вопросам, будут иметь оригинальный код с синтаксическим сахаром и базовый код на C #, в который компилятор преобразует его. Так, например, с помощью выражений linq и запроса они показывают:

var query = from x in myList select x.ToString();

тогда результирующий код будет

var query = myList.Select(x=>x.ToString());

Возможно ли это с помощью инструмента, или вам просто нужно знать, как он работает, из спецификации и перейти оттуда?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2011

Resharper может сделать это преобразование (синтаксис выражения LINQ в лямбда-синтаксис) для вас очень легко.

LINQPad имеет вкладку, которая может показать вам синтаксис лямбда-выражения для запроса, который вы вводите, и имеетеще одна вкладка, которая разбирает его до уровня кода IL.(Есть еще одна вкладка, которая показывает вам SQL, который генерируется, если вы используете LINQ to SQL или LINQ to Entities).

3 голосов
/ 09 февраля 2011

Я не пользователь Resharper, но уверен, что это сработает. Похоже, вы уже знаете альтернативную форму вашего синтаксического запроса Linq. Я думаю, что это ответ; Знай, что ты делаешь. Читайте об этом. Если вы не знаете, вы опасны, и вы не приблизитесь к моей базе кода. :)

Серьезно, это требует минимального прочтения и дает вам огромные возможности в C #. Если вас вообще интересует ваша работа, вы это знаете.

1 голос
/ 09 февраля 2011

Как далеко под капотом ты хочешь пойти?

Если вам действительно интересно посмотреть, как выглядит ваш код после его компиляции, вам следует проверить ildasm.exe. Этот инструмент покажет вам холодный, жесткий IL, сгенерированный при компиляции приложения. Этот инструмент позволит вам открыть любой из ваших скомпилированных сборок, посмотреть реальные гайки и болты, которые под капотом .

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