Преимущества знания CIL в [закрытой].NET

Вы можете присоединиться к одной и той же таблице несколько раз. Таким образом, в приведенном ниже запросе b1 выдаст вам все имена для идентификаторов в A, а b2 соединится по имени, чтобы получить все дополнительные идентификаторы, которых нет в A.

select
  b2.*
from
  A 
  inner join B b1 on b1.id = A.id
  inner join B b2 on b2.name = b1.name
7
задан Joan Venge 11 February 2009 в 17:57
поделиться

5 ответов

Вы не должны знать, что блок изучает это - это является абсолютно отдельным от собственного блока. Хотя во времени выполнения, CLR в основном возвратит его к собственному блоку.

Пара возможных преимуществ:

1) можно посмотреть на CIL, который производится компилятором, и посмотрите конкретно, что делает код

2) для решения определенных видов проблем можно в какой-то момент хотеть динамично сгенерировать код...., например, так как платформа инжектора политики Microsoft не совсем на должном уровне все же, и у нас была потребность того типа поведения, которое мы записали некоторому низкому уровню, инфраструктуре типа платформы..

2
ответ дан 6 December 2019 в 11:53
поделиться

Знание CIL позволяет Вам вытаскивать больше из платформы.NET в некоторых граничных ситуациях.

Отметьте, которому Вы не должны мочь прочитать необработанные коды операций для пользы из этого знания. Универсальное знание IL и блоков, вместе с Mono.Cecil.dll может сделать чудеса:

PS: для меня лучший источник способ получить некоторое практическое знание IL читал код C# для некоторых правил Жандарма (это - аналог FxCop, который использует Моно. Cecil, чтобы сделать самоанализ кода). Кроме того, эта статья была хорошим началом: Парсинг IL Тела Метода.

6
ответ дан 6 December 2019 в 11:53
поделиться

Я нашел эти книги полезными при изучении IL и о CLR:

Просто прочтение их даст Вам большую информацию.

(Я также услышал, что CLR через C# действительно хорош, но не считал его сам.)

Понимание IL и CLR даст Вам участок при столкновении с проблемой. (Текучая абстракция?), Хотя, в эти дни с хорошими декомпиляторами как Отражатель, я не использую ildasm как очень.

Понимание блока не обязательно требуется, но это помогло бы. IL на самом деле довольно прост по большей части.

Один пример того, где IL пригодился, определял точно, как точно F# компилирует определенные конструкции. Другой - способность использовать DynamicMethod и Систему. Отражение. Испустите, который может открыть некоторые хорошие решения в определенных ситуациях.

6
ответ дан 6 December 2019 в 11:53
поделиться

CIL намного более прост, чем регулярный ассемблер imo. Для значительной части это - то, вследствие того, что виртуальная машина является базирующимся стеком, таким образом, все переходит к стеку и нет никаких регистров для отслеживания.

Также нет никаких вычислений смещения, никакого управления непосредственной памятью, вызовы метода перечислены с помощью их имен.NET и т.д. Я предположил бы, что, если у Вас есть немного опыта с каким-либо другим видом ассемблера, Вы, вероятно, сможете взять суть кода CIL довольно быстро.

Лично я нахожу очень полезным смочь разжечь ILDasm или Отражатель для взгляда, в каком IL компилятор C# на самом деле производит для некоторой части кода. Для многих более новых функций, таких как анонимные делегаты / лямбды, полученные переменные, итераторы, и т.п. осматривая IL могут быть очень полезными.

Другие упомянули хорошие книги, и я просто брошу свой голос за Эксперта.NET 2.0 ассемблера IL Serge Lidin. Это имеет все окровавленные детали. Если Вы хотите что-то немного ближе к CLR Jeffrey Ricther C# через C#, превосходно. Книга Jon Skeet является замечательной, но она действительно не покрывает CIL.

3
ответ дан 6 December 2019 в 11:53
поделиться

Существует, вероятно, что-то, что Вы могли сделать с CIL, но я не могу думать о практическом примере первое, что пришло на ум. В любом случае вот учебное руководство:

http://weblogs.asp.net/kennykerr/archive/2004/09/07/introduction-to-msil-part-1-hello-world.aspx

0
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: