Tout le code écrit dans les langages .NET compile vers MSIL, mais y a-t-il des tâches / opérations spécifiques que vous ne pouvez effectuer qu'en utilisant directement MSIL?
Laissez-nous aussi faire les choses plus facilement dans MSIL que C #, VB.NET, F #, j # ou tout autre langage .NET.
Jusqu'à présent, nous avons ceci:
- Récursivité de la queue
- Co / Contravariance générique
- Surcharges qui ne diffèrent que par les types de retour
- Remplacer les modificateurs d'accès
- Avoir une classe qui ne peut pas hériter de System.Object
- Exceptions filtrées (peut être fait dans vb.net)
- Appel d'une méthode virtuelle du type de classe statique actuel.
- Obtenez une poignée sur la version encadrée d'un type valeur.
- Faites un essai / erreur.
- Utilisation de noms interdits.
- Définissez vos propres constructeurs sans paramètre pour les types valeur .
- Définissez des événements avec un
raise
élément. - Certaines conversions sont autorisées par le CLR mais pas par C #.
- Créez une
main()
méthode non comme.entrypoint
. - travailler directement avec les types natifs
int
et natifsunsigned int
. - Jouez avec des pointeurs transitoires
- emitbyte directive dans MethodBodyItem
- Lancer et intercepter les types non System.Exception
- Hériter des énumérations (non vérifiées)
- Vous pouvez traiter un tableau d'octets comme un tableau (4x plus petit) d'entiers.
- Vous pouvez avoir un champ / méthode / propriété / événement tous avoir le même nom (non vérifié).
- Vous pouvez revenir à un bloc try à partir de son propre bloc catch.
- Vous avez accès au spécificateur d'accès famandassem (
protected internal
est fam ou assem) - Accès direct à la
<Module>
classe pour définir des fonctions globales, ou un initialiseur de module.