编译器为匿名方法生成了不正确的代码 [MS BUG FIXED]
问题描述
见以下代码:
new Derived().Bang();
抛出异常.在 Bang
方法生成的 CIL 中,我得到了:
new Derived().Bang();
throws an exception. Inside the generated CIL of the method Bang
I got:
以及编译器生成方法的签名:
and the signature of the compiler generated method:
我认为正确的代码应该是'<>n__FabricatedMethod1'<class T>
.它是一个错误吗?顺便说一句,不使用 delegate{ }
(lambda 表达式是一样的),代码可以很好地使用语法糖.
I think the correct code should be '<>n__FabricatedMethod1'<class T>
. Is it a bug?
By the way, without using delegate{ }
(lambda expression is the same), the code works fine with syntax sugars.
编辑我在 windows8 RTM,.net framework 4.5 中使用 VS2012 RTMRel
EDIT I'm using VS2012 RTMRel in windows8 RTM, .net framework 4.5
编辑此错误现已修复.
推荐答案
确认为bug,现已修复
更新:Connect 文章不再存在.错误已修复.
Update: the Connect article no longer exists. The bug is fixed.
这篇关于编译器为匿名方法生成了不正确的代码 [MS BUG FIXED]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!