用.NET语言编写的所有代码都可以编译为MSIL,但是是否存在只能直接使用MSIL才能执行的特定任务/操作?
让我们在MSIL中也比C#,VB.NET,F#,j#或任何其他.NET语言更轻松地完成工作。
到目前为止,我们有:
- 尾递归
- 通用协/反方差
- 仅在返回类型上有所不同的过载
- 覆盖访问修饰符
- 有一个不能从System.Object继承的类
- 过滤的异常(可以在vb.net中完成)
- 调用当前静态类类型的虚拟方法。
- 获取值类型的盒装版本的句柄。
- 尝试/故障。
- 禁止名称的用法。
- 为值类型定义自己的无参数构造函数。
- 用
raise
元素定义事件。 - CLR允许某些转换,但C#不允许。
- 将非
main()
方法设为.entrypoint
。 - 直接使用本机
int
和本机unsigned int
类型。 - 玩瞬态指针
- 在MethodBodyItem中发出字节指令
- 抛出并捕获非System.Exception类型
- 继承枚举(未验证)
- 您可以将字节数组视为int数组(小4倍)。
- 您可以将字段/方法/属性/事件都具有相同的名称(未验证)。
- 您可以从其自己的catch块分支回try块。
- 您可以访问famandassem访问说明符(
protected internal
是fam 或 assem) - 直接访问
<Module>
用于定义全局函数的类或模块初始化器。