2

原标题:“Mono 2.7: Array Initializer Bug”

我遇到单声道问题,其中数组初始化(至少对于多维数组)在方法调用中内联时不起作用。看起来单声道编译器在方法调用之后发出分配。

例如:

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 回答