【问题标题】:Casting object array with unknown value types to a double将具有未知值类型的对象数组转换为双精度
【发布时间】:2012-06-11 07:41:58
【问题描述】:

我正在编写一个四分位函数,但我遇到了这个问题。我正在拉一个类型和长度未知的数组,但我需要将它转换为双精度。

这是我当前的代码,它编译但抛出了一个无效的强制转换异常:

double[] array1 = array.Cast().ToArray();

任何帮助将不胜感激,在此先感谢。

【问题讨论】:

  • 某些类型根本无法转换为double。例如,System.Drawing.Rectangle 数组或System.Windows.Controls.Button 数组应该发生什么?请在您的问题中解释这一点,以便我们为您指明正确的方向。
  • 我只想要数组中的双精度值,所以如果我遍历数组。只需将所有双精度都放入一个列表中。获得列表后,我可以将列表转换为双精度数组。这可能吗?我可以认为我可能需要做一个 foreach 循环?你能告诉我这段代码是如何创建列表的吗?循环遍历对象数组以获取所有双精度数并将其放入双精度数组。

标签: object types casting double


【解决方案1】:

最简单的方法应该是:

double[] array1 = array.OfType<double>().ToArray();

您需要将using System.Linq; 添加到文件顶部才能编译。

【讨论】:

  • 这是我目前拥有的:
  • 我仍然得到错误,无论如何这可以工作:List doubleobjects = new List (); foreach (数组中的双 obj) { 尝试 { doubleobjects.Add(obj); } catch(Exception ex) { //messageBox.Show(ex.Message); } } double[] array2 = array.Cast().ToArray();
  • @user1441726 不,如果array 包含无法转换或强制转换为double 值的项目,这不可能工作。根据您的上述评论(关于问题),我认为您只想提取那些为 double 值的项目,这就是我的代码 sn-p 所做的。
猜你喜欢
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 2011-11-20
  • 2017-02-24
  • 2011-07-07
  • 2015-09-13
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多