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

Jac*_*hee 3 mono il interop xamarin.ios

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

var bytes = new byte[,]{};
Run Code Online (Sandbox Code Playgroud)

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

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

var bytes = new byte[,]{{}};
Run Code Online (Sandbox Code Playgroud)

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

Rol*_*nge 8

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

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

目前的计划是让MonoTouch在今年秋天的某个时候开始使用Mono 2.12,如果它是你的阻止程序,你可以打开一个错误报告来查看修复程序是否可以进入早期版本的MonoTouch.