2013-07-25 24 views
2

不知道編輯變量如何撰寫標題措辭差很抱歉,但如果我有這樣的事情如何在類陣列

public class Item 
{ 
    public string itemName; 
    public double itemPrice; 
    public double shipping; 
    public double tax = 0.12; 
    public double total; 
} 

然後我繼續聲明數組

Item[] item = new Item[100] 

我覺得這是一個壞的方法來創建一個這樣的數組,但這裏的問題是一個任意大小的數組,所以我肯定知道這將是100下,但該項目將繼續得到補充上。

我怎麼能現在編輯項[0]的ITEMPRICE?

我試着使用:

item[0].itemPrice = 34; 

但無濟於事。

謝謝!

+0

什麼是錯誤? – Ofiris

+0

您是否初始化了數組中的每個項目對象? – Paddyd

+0

在附註上,您可能想了解如何使用構造函數和getter/setter方法。 – jpw

回答

3

當您使用Item[] item = new Item[100];,你只是分配內存爲您的收藏,但你需要這個陣列中初始化每個對象了。

Item[] item = new Item[100]; 
item[0] = new Item(); 
item[0].itemName = "1"; 
+0

感謝我沒有初始化每個項目。 – MikaAK

+0

您將需要一個循環來初始化數組中的每個項目。 – Paddyd

0

你必須創建第一

item[0] = new Item(); 
item[0].itemprice = 34; 

PS你應該讓那些公共成員屬性項目(S)。

0
var items = new List<Item>(); 
item.Add(new Item()) 
items.First().ItemName = "Foo"; 
0

嘗試使用List<Item>而不是數組。當您向其中添加項目時,List<T>會自動擴展。

List<Item> list = new List<Item>(); 
Item myItem = new Item(); 
list.Add(myItem); 

list[0].itemPrice = 0; 
0

如果你聲明一個Item的數組,你正在創建數組,但沒有類實例; item[0]將爲null

一個簡單的方法來創建實例的數量arbitary使用Enumerable.Range

var items = Enumerable.Range(0, 20).Select (_ => new Item()).ToList(); 

這將創建20個Item實例的列表(您也可以創建通過調用ToArray而不是ToList數組)。

0

你必須在數組中初始化每個項目。 假設你有一個合適的構造函數...

Item[] item = new Item[100] 

for (int i = 0; i < 100; i++) 
{ 
    item[i] = new item(); 
} 

item[0].itemPrice = 34;