2

元のタイトル : 「Mono 2.7: 配列初期化子のバグ」

メソッド呼び出しでインライン化されている場合、配列の初期化 (少なくとも多次元配列の場合) が機能しない mono に問題があります。メソッド呼び出しの後に mono コンパイラが割り当てを発行しているようです。

例えば:

MathLib.PrintMatrix(new double[,] { {1.0, 1.0}, {1.0, 1.0} });

// Prints the following
// 0.0, 0.0
// 0.0, 0.0

ただし、次のコードは正しく機能します。

var myArray = new double[,] = { {1.0, 1.0}, {1.0, 1.0} };

MathLib.PrintMatrix(myArray);

// Prints the following
// 1.0, 1.0
// 1.0, 1.0

この問題に対処するリリース ノートが見つかりませんでした。現在、古いバージョンを実行しています (有益でない限り更新したくありません)。このバグが修正されたかどうか知っている人はいますか?

4

1 に答える 1

1

私は2.7(2.8のベータ版)を持っていませんが、古いもの(Ubuntuでは2.6.7)を持っています

poupou@mizar:~/src$ gmcs --version
Mono C# compiler version 2.6.7.0
poupou@mizar:~/src$ cat x.cs
using System;

class Program {

    static void PrintMatrix (double[,] values)
    {
        Console.WriteLine ("{0}, {1}\n{2}, {3}", values [0,0], values [0,1], values [1,0], values [1,1]);
    }

    static void Main ()
    {
        PrintMatrix (new double[,] { {1.0, 2.0}, {3.0, 4.0} });
    }
}

poupou@mizar:~/src$ gmcs x.cs
poupou@mizar:~/src$ mono x.exe
1, 2
3, 4

そしてもっと新しいもの:gitからの2.11

[mono] ~/src @ mcs --version
Mono C# compiler version 2.11.0.0
[mono] ~/src @ mcs x.cs
[mono] ~/src @ mono x.exe
1, 2
3, 4

したがって、あなたの問題は、古い、サポートされていない Mono のベータ リリースの使用に関連していると思います。

于 2011-10-12T23:50:43.963 に答える