Der gesamte in .NET-Sprachen geschriebene Code wird in MSIL kompiliert. Gibt es jedoch bestimmte Aufgaben / Vorgänge, die Sie nur direkt mit MSIL ausführen können?
Lassen Sie uns auch in MSIL einfacher arbeiten als in C #, VB.NET, F #, j # oder einer anderen .NET-Sprache.
Bisher haben wir Folgendes:
- Schwanzrekursion
- Generische Co / Contravariance
- Überladungen, die sich nur in Rückgabetypen unterscheiden
- Zugriffsmodifikatoren überschreiben
- Haben Sie eine Klasse, die nicht von System.Object erben kann
- Gefilterte Ausnahmen (können in vb.net durchgeführt werden)
- Aufruf einer virtuellen Methode des aktuellen statischen Klassentyps.
- Holen Sie sich einen Überblick über die Box-Version eines Werttyps.
- Mach einen Versuch / Fehler.
- Verwendung verbotener Namen.
- Definieren Sie Ihre eigenen parameterlosen Konstruktoren für Werttypen .
- Definieren Sie Ereignisse mit einem
raise
Element. - Einige Konvertierungen sind von der CLR zulässig, jedoch nicht von C #.
- Machen Sie eine Nicht-
main()
Methode als.entrypoint
. - Arbeiten Sie direkt mit den nativen
int
und nativenunsigned int
Typen. - Spielen Sie mit vorübergehenden Zeigern
- Emitbyte-Direktive in MethodBodyItem
- Nicht System.Exception-Typen werfen und abfangen
- Enumit Enums (Unverified)
- Sie können ein Array von Bytes als (4x kleineres) Array von Ints behandeln.
- Sie können ein Feld / eine Methode / eine Eigenschaft / ein Ereignis haben, die alle denselben Namen haben (nicht überprüft).
- Sie können von einem eigenen catch-Block zurück in einen try-Block verzweigen.
- Sie haben Zugriff auf den Famandassem-Zugriffsspezifizierer (
protected internal
ist Fam oder Assem). - Direkter Zugriff auf die
<Module>
Klasse zum Definieren globaler Funktionen oder einen Modulinitialisierer.