无效的IL代码IL_0038:MonoTouch中的newobj

时间:2012-07-25 16:58:16

标签: mono xamarin.ios interop il

在MonoTouch下,以下代码行编译,但会生成InvalidProgramException:

var bytes = new byte[,]{};

System.InvalidProgramException
Invalid IL code in Foo: IL_0038: newobj 0x0a000012

但是,以下内容在运行时不会失败:

var bytes = new byte[,]{{}};

我使用第二个表达式很好。但是,第一个有什么问题吗?如果是这样,它不应该编译失败吗?

1 个答案:

答案 0 :(得分:8)

这看起来像是MonoTouch中C#编译器的一个错误,它错误地编译了表达式。

如果我尝试使用较新的C#编译器(来自Mono 2.12),表达式将被正确编译,并且生成的程序可以正常工作。

目前的计划是让MonoTouch在今年秋天的某个时候开始使用Mono 2.12,如果它是你的拦截器,你可以open a bug report查看修复程序是否可以进入早期版本的MonoTouch。