如何将double []转换为System.Windows.Media.DoubleCollection?

时间:2010-08-11 12:38:50

标签: c# .net silverlight

如果没有复制值,有没有办法呢?

4 个答案:

答案 0 :(得分:4)

不幸的是,需要复制这些值,但DoubleCollection has a constructor会自动为您执行此操作:

var foo = new double[] { 1.0, 2.5, 3.3, 4.1, 5.9 };
var bar = new DoubleCollection(foo);

修改...

您已经指定使用Silverlight,这意味着没有可用的构造函数。在这种情况下,你需要自己完成所有的工作(而不是它实际上需要额外的工作):

var foo = new double[] { 1.0, 2.5, 3.3, 4.1, 5.9 };
var bar = new DoubleCollection();
foreach (double d in foo) bar.Add(d);

// or, if you prefer Array.ForEach to a foreach loop...
// Array.ForEach(foo, d => bar.Add(d));

答案 1 :(得分:2)

快速回答是否定的。

DoubleCollection有一个constructor,可以使用IEnumerable<Double>

DoubleCollection dc = new DoubleColection(myArray);

这仍然会创建每个值的副本。

答案 2 :(得分:0)

您应该可以使用constructor of DoubleCollection来执行此操作,但在幕后,可能只是复制值,因此我会反映它以确保。

答案 3 :(得分:0)

DoubleCollection dCollection = new DoubleColection(myDoubleArray);