2013-11-01 67 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感謝您的評論,爲不同的ValueType添加了一個建議。 – Asik