手写的CIL可以做C#不能做的事情吗?

所以这是一个非常简单的问题,但我在任何地方都没有看到答案.

如果我以某种方式手动生成CIL代码,是否可以执行C#中禁止的操作?什么样的东西? (显然我不期待一份详尽的清单.)

我还没有深入研究CIL的细节.但鉴于CLR应该是与语言无关的,但支持用不同语言编写的组件之间的紧密耦合,我希望CIL能够在对象级工作,并且可能有自己的类型系统.我可以想象类型系统不如C#严格,可能还有一些其他可能不同的东西.但我想知道是否有人明确地知道,而无需阅读整个语言规范……

最佳答案 当然.没有任何东西能让你实现无法用C#编写的任务(Turing-completeness等),但是目前没有在C#中公开的编程结构.请注意,即将推出的C#6会增加一些.

一个肯定不完整的清单,在我的头顶:

>尝试..故障块.它们仅在异常退出try块时执行.
>异常过滤器. VB已经拥有了它们,而C#6也将拥有它们:赶上…时.
> Struct(值类型)无参数构造函数. C#6将拥有它们.编辑:svick评论说该功能已被删除.
>枚举上的通用类型约束.
>受保护的内部可见性修饰符(您必须是同一程序集中的派生类才能访问该字段).

我相信还有更多.

点赞