Весь код, написаний мовами .NET, компілюється в MSIL, але чи існують конкретні завдання / операції, які ви можете виконувати лише безпосередньо за допомогою MSIL?
Дозвольте нам також зробити легше в MSIL, ніж C #, VB.NET, F #, j # або будь-якій іншій мові .NET.
Поки що ми маємо це:
- Рекурсія хвоста
- Generic Co / суперечності
- Перевантаження, які відрізняються лише типом повернення
- Заміна модифікаторів доступу
- Майте клас, який не може успадкувати System.Object
- Відфільтровані винятки (можна зробити на vb.net)
- Виклик віртуального методу поточного типу статичного класу.
- Отримайте ручку на коробці у версії типу значення.
- Зробіть спробу / помилку.
- Використання заборонених імен.
- Визначте власні конструктори без параметрів для типів значень .
- Визначте події за допомогою
raise
елемента. - Деякі конверсії, дозволені CLR, але не C #.
- Зробіть не
main()
метод як.entrypoint
. - працювати безпосередньо з рідним
int
та ріднимunsigned int
типами. - Грайте з перехідними покажчиками
- директива випромінювання в MethodBodyItem
- Киньте і ловіть не типи System.Exception
- Спадкові перерахунки (неперевірені)
- Ви можете трактувати масив байтів як (на 4 рази менший) масив вкладень.
- Ви можете мати поле / метод / властивість / подія, всі мають однакове ім’я (Неперевірене).
- Ви можете відключитися на спробу блоку з власного блоку лову.
- Ви маєте доступ до специфікатора доступу famandassem (
protected internal
є fam або assem) - Прямий доступ до
<Module>
класу для визначення глобальних функцій або ініціалізатор модуля.