2010-08-11 2 views

ответ

4

К сожалению, значения должны быть скопированы, но DoubleCollection has a constructor, что сделает это за вас автоматически:

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

EDIT ...

Вы указали, что вы используете 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)); 
+0

Пробовал ваш код. Got «System.Windows.Media.DoubleCollection» не содержит конструктор, который принимает 1 аргумент ». хотя в MSDN есть такой конструктор: http://msdn.microsoft.com/en-us/library/system.windows.media.doublecollection_members.aspx. – Sergey

+0

Понял, что случилось. Я использую Silverlight, а не полную платформу .NET. – Sergey

2

Быстрый ответ: нет.

DoubleCollection имеет constructor, который принимает IEnumerable<Double>, что вы можете использовать:

DoubleCollection dc = new DoubleColection(myArray); 

Это будет по-прежнему создает копию каждого значения.

0

Вы должны быть в состоянии использовать constructor of DoubleCollection, чтобы сделать это, но под одеялом, которые могли бы просто скопируйте значения, поэтому я бы отразил это, чтобы убедиться.

0
DoubleCollection dCollection = new DoubleColection(myDoubleArray); 
Смежные вопросы