Todo o código escrito nas linguagens .NET é compilado para o MSIL, mas existem tarefas / operações específicas que você só pode fazer usando o MSIL diretamente?
Vamos também fazer coisas mais fáceis no MSIL do que C #, VB.NET, F #, j # ou qualquer outra linguagem .NET.
Até agora, temos o seguinte:
- Recursão da cauda
- Co / Contravariância Genérica
- Sobrecargas que diferem apenas nos tipos de retorno
- Substituir modificadores de acesso
- Tem uma classe que não pode herdar do System.Object
- Exceções filtradas (podem ser feitas em vb.net)
- Chamando um método virtual do tipo de classe estática atual.
- Identifique a versão em caixa de um tipo de valor.
- Faça uma tentativa / falha.
- Uso de nomes proibidos.
- Defina seus próprios construtores sem parâmetros para tipos de valor .
- Defina eventos com um
raise
elemento. - Algumas conversões permitidas pelo CLR, mas não pelo C #.
- Faça um
main()
método não como o.entrypoint
. - trabalhe diretamente com os tipos
int
nativo e nativounsigned int
. - Brincar com ponteiros transitórios
- diretiva emitbyte em MethodBodyItem
- Lançar e capturar tipos não System.Exception
- Herdar enums (não verificado)
- Você pode tratar uma matriz de bytes como uma matriz de ints (4x menor).
- Você pode ter um campo / método / propriedade / evento com o mesmo nome (Não verificado).
- Você pode ramificar novamente em um bloco try a partir de seu próprio bloco catch.
- Você tem acesso ao especificador de acesso famandassem (
protected internal
é fam ou assem) - Acesso direto à
<Module>
classe para definir funções globais ou um inicializador de módulo.