【问题标题】:Double Array to Object Array?双数组到对象数组?
【发布时间】:2012-11-13 21:16:20
【问题描述】:

我有以下数组:

double[] Series = new double[] { 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 }

系列调试视图:

> Series
--> [0]
--> [1]
--> ...
--> [10]
--> [11]

当我写以下内容时:

object[] object_array = new object[] { Series }

object_array 调试视图:(不止一层)

> object_array
--> [0]
----> [0]
----> [1]
----> ...
----> [10]
----> [11]

我写以下内容以防止新级别:

object[] object_array = new object[Series.Length];
for (int i = 0; i < Series.Length; i++)
{
    object_array[i] = Series[i];
}

这是其他解决方案之一。但我认为,可能有更好的方法来做到这一点。我使用上面的循环有问题吗?还是其他方式?

(我使用highcharts。如果我给出包含多个级别的数组,它不起作用。)

谢谢。

【问题讨论】:

  • 如果你传递 object_array[0],它似乎仍然会传递一个双精度数组。

标签: c# casting


【解决方案1】:
var object_array = Series.Cast<object>().ToArray();

【讨论】:

    【解决方案2】:

    这样做

    object[] object_array = new object[] { Series }
    

    您正在分配一个双精度数组作为数组 object_array 的第一个对象项。您实际上是在创建一行的二维数组。你可以使用这样的东西:

    double[] Series = new double[] { 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 };
    object[] object_array = new object[Series.Length];
    Series.CopyTo(object_array, 0);
    

    【讨论】:

    • @ErenErsönmez,对不起,我犯了语法错误。你的代码也是正确的。
    【解决方案3】:

    使用 LINQ:

    double[] series = new double[] { 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 };
    object[] seriesAsAbjectArray = series.Cast<object>().ToArray();
    

    不能将其转换为object[] 的原因是double 是一个值类型,因此您必须创建一个包含boxed double-items.

    【讨论】:

      【解决方案4】:

      您只需分配它,因为doubleobject

      object[] object_array = Series;
      

      【讨论】:

      • 当我尝试这样做时出现错误:'Cannot implicitly convert type 'double[]' to 'object[]''
      • 这只是隐藏了它是一个双精度数组的事实,而不是将其更改为一个对象数组。
      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多