Todo el código escrito en lenguajes .NET se compila en MSIL, pero ¿hay tareas / operaciones específicas que solo puede hacer usando MSIL directamente?
Hagamos también que las cosas se hagan más fácilmente en MSIL que C #, VB.NET, F #, j # o cualquier otro lenguaje .NET.
Hasta ahora tenemos esto:
- Recursividad de la cola
- Co / Contravarianza Genérica
- Sobrecargas que difieren solo en los tipos de retorno
- Anular modificadores de acceso
- Tener una clase que no pueda heredar de System.Object
- Excepciones filtradas (se puede hacer en vb.net)
- Llamando a un método virtual del tipo de clase estática actual.
- Obtenga un identificador de la versión en caja de un tipo de valor.
- Haz un intento / falla.
- Uso de nombres prohibidos.
- Defina sus propios constructores sin parámetros para los tipos de valor .
- Definir eventos con un
raise
elemento. - Algunas conversiones permitidas por el CLR pero no por C #.
- Hacer un
main()
método no como el.entrypoint
. - trabajar con los tipos nativos
int
y nativosunsigned int
directamente. - Juega con punteros transitorios.
- directiva emitbyte en MethodBodyItem
- Lanza y atrapa tipos que no sean del sistema.
- Heredar enumeraciones (sin verificar)
- Puede tratar una matriz de bytes como una matriz (4x más pequeña) de entradas.
- Puede tener un campo / método / propiedad / evento, todos tienen el mismo nombre (sin verificar).
- Puede volver a ramificarse en un bloque try desde su propio bloque catch.
- Tiene acceso al especificador de acceso famandassem (
protected internal
es fam o assem) - Acceso directo a la
<Module>
clase para definir funciones globales, o un inicializador de módulo.