Tutto il codice scritto nei linguaggi .NET viene compilato in MSIL, ma esistono attività / operazioni specifiche che è possibile eseguire solo utilizzando MSIL direttamente?
Cerchiamo anche di fare le cose più facilmente in MSIL rispetto a C #, VB.NET, F #, j # o qualsiasi altro linguaggio .NET.
Finora abbiamo questo:
- Ricorsione della coda
- Co / Contravarianza generica
- Sovraccarichi che differiscono solo per i tipi di restituzione
- Sostituisci modificatori di accesso
- Avere una classe che non può ereditare da System.Object
- Eccezioni filtrate (può essere fatto in vb.net)
- Chiamata a un metodo virtuale del tipo di classe statica corrente.
- Ottieni un handle sulla versione in scatola di un tipo di valore.
- Fai un tentativo / guasto.
- Uso di nomi proibiti.
- Definisci i tuoi costruttori senza parametri per i tipi di valore .
- Definisci gli eventi con un
raise
elemento. - Alcune conversioni consentite dal CLR ma non da C #.
- Crea un
main()
metodo non come.entrypoint
. - lavorare direttamente con i tipi nativi
int
e nativiunsigned int
. - Gioca con puntatori transitori
- direttiva emitbyte in MethodBodyItem
- Lancia e cattura tipi non System.Exception
- Inherit Enums (Non verificato)
- È possibile trattare un array di byte come un array (4 volte più piccolo) di ints.
- Puoi avere un campo / metodo / proprietà / evento tutti con lo stesso nome (Non verificato).
- È possibile ramificare in un blocco try dal proprio blocco catch.
- Hai accesso allo specificatore di accesso famandassem (
protected internal
è fam o assem) - Accesso diretto alla
<Module>
classe per la definizione di funzioni globali o un inizializzatore del modulo.