在MonoTouch下,以下代码行编译,但会生成InvalidProgramException:
var bytes = new byte[,]{};
System.InvalidProgramException
Invalid IL code in Foo: IL_0038: newobj 0x0a000012
但是,以下内容在运行时不会失败:
var bytes = new byte[,]{{}};
我使用第二个表达式很好。但是,第一个有什么问题吗?如果是这样,它不应该编译失败吗?
答案 0 :(得分:8)
这看起来像是MonoTouch中C#编译器的一个错误,它错误地编译了表达式。
如果我尝试使用较新的C#编译器(来自Mono 2.12),表达式将被正确编译,并且生成的程序可以正常工作。
目前的计划是让MonoTouch在今年秋天的某个时候开始使用Mono 2.12,如果它是你的拦截器,你可以open a bug report查看修复程序是否可以进入早期版本的MonoTouch。