无法在C#中使用集合初始化器错误初始化十进制类型

时间:2018-06-27 10:19:07

标签: c#

我正在尝试在csharp中初始化多维数组。我收到错误消息,无法使用集合初始值设定项初始化类型为十进制,因为它未实现systems.collections.IEnumerable。不确定  问题是

Json结构

 "StressTestAnalysis": {
    "GraphData": [
      [ 90000, 1, 1000000],
      [ 91000, 1, 2000000],
      [ 92000, 1, 3000000],
      [ 93000, 1, 4000000],
      [ 94000, 1, 5000000],
      [ 95000, 1, 6000000],
      [ 96000, 1, 7000000],
      [ 97000, 1, 8000000],
      [ 98000, 1, 9000000],
      [ 99000, 0, 10000000],
      [ 100000, 0, 11000000],
      [ 101000, 0, 12000000],
      [ 102000, 0, 13000000],
      [ 103000, 0, 14000000],
      [ 104000, 0, 15000000],
      [ 105000, 0, 16000000],
      [ 106000, 0, 17000000],
      [ 107000, 0, 18000000],
      [ 108000, 0, 19000000],
      [ 109000.00000000001, 0, 20000000],
      [ 110000.00000000001, 0, 21000000]
    ],




 public class StressTestAnalysis
    {
        public StressTestResults Results { get; set; }
        public decimal[][][] GraphData { get; set; }
    }


       trigger2Output.StressTestAnalysis.GraphData = new decimal[][][]
            {
               new decimal { 90000, 1, 1000000}

            } ;

2 个答案:

答案 0 :(得分:1)

您的课程是错误的,您不需要三维数组。您只需要2个尺寸。此外,集合初始化程序代码还需要进行一些微调:

更新的类:

public class StressTestAnalysis
{
    public StressTestResults Results { get; set; }
    public decimal[][] GraphData { get; set; }
}

并填写代码:

//Note this is now a 2D array
trigger2Output.StressTestAnalysis.GraphData = new decimal[][]
{
    new decimal[] { 90000, 1, 1000000}
    //         ^^ add this
};

答案 1 :(得分:0)

您似乎正在混淆数组中所需的维数。对于初学者来说,这是

new decimal { 90000, 1, 1000000}

您要声明一个decimal,但尝试将其初始化为数组。声明为数组:

new decimal[] { 90000, 1, 1000000}

然后,在更高级别上,您将其用作另一个数组中的元素:

new decimal[][][]
{
   new decimal[] { 90000, 1, 1000000}
}

但是您的数组包含一个数组,而不是数组的数组。这使其成为二维维度,而不是三个

new decimal[][]
{
   new decimal[] { 90000, 1, 1000000}
}

更新您的课程属性以解决此问题:

public decimal[][] GraphData { get; set; }

现在您可以成功设置二维二维数组。