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,但项目会不断添加。

我现在如何编辑 item[0] 的 itemPrice?

我尝试使用:

item[0].itemPrice = 34;

但无济于事。

谢谢!

4

6 回答 6

3

当你使用 时Item[] item = new Item[100];,你只是为你的集合分配内存,但你也需要初始化这个数组中的每个对象。

Item[] item = new Item[100];
item[0] = new Item();
item[0].itemName = "1";
于 2013-07-25T08:58:15.790 回答
0

如果您声明一个 数组Item,则您正在创建数组,但没有类实例;item[0]null

创建任意数量的实例的一种简单方法是使用Enumerable.Range

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

这将创建一个包含 20 个Item实例的列表(您也可以通过调用ToArray而不是创建一个数组ToList)。

于 2013-07-25T09:00:46.633 回答
0

您必须初始化数组中的每个项目。假设你有一个合适的构造函数......

Item[] item = new Item[100]

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

item[0].itemPrice = 34;
于 2013-07-25T09:01:09.287 回答
0

您必须先创建项目

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

PS你应该让那些公共成员属性。

于 2013-07-25T08:59:16.613 回答
0
var items = new List<Item>();
item.Add(new Item())
items.First().ItemName = "Foo";
于 2013-07-25T08:59:38.527 回答
0

尝试使用List<Item>而不是数组。List<T>当您向其中添加项目时会自动扩展自身。

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

list[0].itemPrice = 0;
于 2013-07-25T08:59:42.567 回答