【问题标题】:Mono 2.6.7: Array Initializer Bug?Mono 2.6.7:数组初始化程序错误?
【发布时间】:2011-10-12 23:26:06
【问题描述】:

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

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

【问题讨论】:

  • Mono 2.7 真的很老了,作为一个 odd (7) 版本号,它是一个通向 2.8 的测试版(本身就很老了)。
  • 有趣。我没有意识到 Mono 的版本控制方案。

标签: c# arrays mono initialization array-initialization


【解决方案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 测试版有关。

【讨论】:

  • 谢谢!我会把这个介绍给负责人:)
  • 实际上,这相当很奇怪,因为我回忆起不正确的版本号(我不直接使用 mono,我的一个团队成员这样做)。我们使用的是 2.6.7,它似乎在您的机器上产生了正确的结果。还有其他想法吗?我们也在运行 Ubuntu。
  • 不行,请发一个完整源代码的链接,我可以在本地试用。
  • 如果可以的话我会的:((雇主限制)。我必须自己解决这个问题。如果我发现任何特别有趣的东西,我会发布。
  • 认真的吗?只有 PrintMatrix (并且只有使其编译失败所需的部分)?无论如何,您应该尝试(如果您还没有)编译我上面的代码 - 如果它有效,那么它在您的代码中是其他/不同的(如果它没有,那么请确保您没有使用不同的、较旧的编译器 - 例如--版本)。
猜你喜欢
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多