Возможно, вы захотите использовать IL напрямую в тех (по общему признанию) ситуациях, когда язык более высокого уровня, такой как C #, не обеспечивает точности или функций, которые вам нужны.
Например, в System.Dynamic
есть некоторые функции, которые используются в динамических языках, таких как IronPython, которые нелегко использовать в C #. Переход к IL может помочь в тех ситуациях, когда вам нужно смешивать языки, например, для сторонней библиотеки.
С другой стороны, дизассемблирование в IL может быть очень полезным, так как вы можете точно определить, какой код генерирует компилятор для вашей программы на C #. Это бесценно, например, для микрооптимизации производительности.