3

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

var bytes = new byte[,]{};

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

但是,以下操作在运行时不会失败:

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

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

4

1 回答 1

8

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

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

目前的计划是 MonoTouch 在今年秋天晚些时候开始使用 Mono 2.12,如果它对你来说是一个障碍,你可以打开一个错误报告,看看修复是否可以使它成为 MonoTouch 的早期版本。

于 2012-07-25T18:12:52.453 回答