3

MonoTouch では、次のコード行はコンパイルされますが、InvalidProgramException が生成されます。

var bytes = new byte[,]{};

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

ただし、以下は実行時に失敗しません。

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

2番目の式を使用しても問題ありません。しかし、最初に何か問題がありますか?もしそうなら、コンパイルに失敗するべきではありませんか?

4

1 に答える 1

8

これは、MonoTouch の C# コンパイラのバグのようで、式が正しくコンパイルされません。

新しい C# コンパイラ (Mono 2.12 以降) を試してみると、式は正しくコンパイルされ、結果のプログラムは機能します。

現在の計画では、MonoTouch がこの秋に Mono 2.12 の使用を開始する予定です。これが妨げになっている場合は、バグ レポートを開いて、修正によって以前のバージョンの MonoTouch に組み込むことができるかどうかを確認できます。

于 2012-07-25T18:12:52.453 に答える