2013-11-01 3 views
0

Что такое более быстрый/более короткий способ сделать это.Как добавить несколько значений в массив объектов

 Store[] store = new Store[3]; 

     store [0] = new Store(); 
     store [0].Price = 5.24; 
     store [0].ValueType = eValueType.Normal; 

     store [1] = new Store(); 
     store [1].Price = 7.89; 
     store [1].ValueType = eValueTyp.Normal; 

     store [2] = new Store(); 
     store [2].Price = 7.89; 
     store [2].ValueType = eValueTyp.Normal; 




public class Store 
{ 
    public enum eValueType 
    { 
     Real, 
     Normal 
    } 

    private double _price; 
    private eValueType _valueType; 

    public double Price 
    { 
     get { return _price; } 
     set { _price = value; } 
    } 

    public eValueType ValueType 
    { 
     get { return _valueType; } 
     set { _valueType = value; } 
    } 
} 
+5

Этот вопрос, как представляется, не по теме, поскольку речь идет о работоспособном коде. Подумайте о размещении его на Code Review. – Servy

ответ

2

Вы можете использовать инициализаторы объектов, например:

store[0] = new Store() { Price = 5.24, ValueType = eValueType.Normal }; 
store[1] = new Store() { Price = 7.89, ValueType = eValueType.Normal }; 
store[2] = new Store() { Price = 7.89, ValueType = eValueType.Normal }; 

Или, если вы предоставляете конструктор для вашего Store класса, как это:

public Store (double price, eValueType valueType) 
{ 
    this.Price = price; 
    this.eValueType = valueType; 
} 

Затем вы можете использовать его, как это :

store[0] = new Store(5.24, eValueType.Normal); 
store[1] = new Store(7.89, eValueType.Normal); 
store[2] = new Store(7.89, eValueType.Normal); 

На стороне примечания, вы должны, вероятно, использовать decimal вместо double, если вы пытаетесь представить валютные значения.

1
var stores = new [] 
    { 
     new Store { Price = 5.24, ValueType = eValueType.Normal }, 
     new Store { Price = 7.89, ValueType = eValueType.Normal }, 
     new Store { Price = 7.89, ValueType = eValueType.Normal } 
    }; 
1
var stores = (new[] { 5.24, 7.89, 7.89 }) 
      .Select(p => new Store{ Price = p, ValueType = eValueType.Normal }) 
      .ToArray(); 

Или если у вас есть различные «типы значения», а также:

var prices = new[] { 3.12, 6.34, 7.89 }; 
var values = new[] { eValueType.Normal, eValueType.Real, eValueType.Real }; 
var stores = prices.Zip(values, 
       (p, v) => new Store { Price = p, ValueType = v }) 
       .ToArray(); 
+0

Это самое умное решение на основе образцов, предоставленных IMO. Это ломается, если ценностный тип всегда не нормальный, но отличное решение. +1 – paqogomez

+1

@paqogomez Спасибо за комментарий, добавлено предложение для разных ValueTypes. – Asik

Смежные вопросы