单声道2.6.7:数组初始化程序错误?

时间:2011-10-12 23:26:06

标签: c# arrays mono initialization array-initialization

最初标题:“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

我找不到解决此问题的任何发行说明,而且我目前正在运行旧版本(我不想更新,除非它会有益)。有谁知道这个bug是否已修复?

1 个答案:

答案 0 :(得分: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

和更新的东西:2.11来自 git

[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测试版有关。