Весь код, написанный на языках .NET, компилируется в MSIL, но существуют ли определенные задачи/операции, которые вы можете использовать только с помощью MSIL напрямую?
Давайте также облегчим работу в MSIL, чем С#, VB.NET, F #, j # или любой другой язык .NET.
До сих пор мы имеем это:
- Рекурсия хвоста
- Общие Co/Контравариантность
- Перегрузки, которые отличаются только типами возврата
- Модификаторы переопределения доступа
- Имейте класс, который не может наследовать из System.Object
- Отфильтрованные исключения (можно сделать в vb.net)
- Вызов виртуального метода текущего типа статического класса.
- Получить дескриптор в коробке версии типа значения.
- Сделайте попытку/ошибку.
- Использование запрещенных имен.
- Определите собственные конструкторы без параметров для типов значений.
- Определить события с помощью элемента
raise
. - Некоторые преобразования, разрешенные CLR, но не С#.
- Создайте метод
main()
как.entrypoint
. - напрямую работать с родными
int
и роднымиunsigned int
. - Игра с переходными указателями
- директива emitbyte в MethodBodyItem
- Бросить и уловить не System.Exception типы
- Inherit Enums (Не проверено)
- Вы можете обрабатывать массив байтов как (4x меньше) массив ints.
- У вас может быть поле/метод/свойство/событие, все имеют одинаковое имя (непроверено).
- Вы можете вернуться в блок try из своего собственного блока catch.
- У вас есть доступ к спецификатору доступа famandassem (
protected internal
is fam или) - Прямой доступ к классу
<Module>
для определения глобальных функций или инициализатора модуля.