初始化数组数组

时间:2013-07-22 14:23:16

标签: c# arrays initialization

我正在尝试制作一些测试数据来测试我的代码的某些功能。为此,我需要一个double[][]。我正在尝试使用一个函数,该函数将double[][]作为输入参数并将包含测试数据的局部变量复制到其上。但是,我得到一个我不太明白的错误(我确定这是一个非常基本的错误,这就是为什么我无法谷歌它),理解/修复哪些我会感激任何帮助。

private void makeData(double[][] patterns)
{
    double[][] data = new double[2][];
    // exists so that I can change `data` easily, without having to change the core functionality of copying it over to `patterns`
    data[0] = {1.0,8.0}; // error!
    // copy over everything from data into patterns
}

上面代码中标记的行给出了错误Only assignment, call, increment, decrement, and new objects can be used as a statement。对此,我的反应是“不是data[0] = {1.0,8.0};作业?

我很困惑,所以我很感激任何帮助

3 个答案:

答案 0 :(得分:5)

你想做

data[0] = new[] {1.0, 8.0};

花括号初始值设定项仅在您创建对象/数组时有效。他们不能单独工作。

您可以具体指定类型:

data[0] = new double[] {1.0, 8.0};

但是,如果编译器可以推断出正确的类型(在您的情况下,它可以),那么您不必这样做。

答案 1 :(得分:3)

只需替换:

data[0] = {1.0,8.0};

由:

data[0] = new double[] { 1.0, 8.0 };

编译器必须明确知道要分配给data[0]的内容。它不会从data[0]的类型推断它。

答案 2 :(得分:1)

您应该首先初始化您的子阵列。

double[][] data = new double[2][];
data[0] = new double[] {1.0f, 8.0f};