使用Get和Set设置特定的数组元素

时间:2016-04-17 14:59:50

标签: c# arrays get set

我在C#中的学校作业有问题。

我在这里只包含部分代码,我希望它足够了。

我创建了一个带有索引25的Bottle类数组.Bottle类包含三个属性。

现在我需要在数组中获取和设置值,但我无法设法。

请参阅下面的示例。我哪里做错了?程序没有显示任何错误,但编译没有成功。如果需要更多代码,我很乐意给它!

public class Sodacrate
{
    private Bottle[] bottles;
    public Sodacrate() // Constructor for handling new sodas in the soda crate.
    {
        bottles = new Bottle[25];

        bottles[0].Brand = "Fanta";
        bottles[0].Price = 15;
        bottles[0].Kind = "Soda";
    }
}


public class Bottle
{
    private string brand;
    private double price;
    private string kind;

    public string Brand
    {
        get { return brand; }
        set { brand = value; }
    }

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

    public string Kind
    {
        get { return kind; }
        set { kind = value; }
    }

}

2 个答案:

答案 0 :(得分:2)

数组的零索引没有对象。你正在做的是在这里为数组设置内存:

bottles = new Bottle[25];

然后您正在尝试在此处设置该数组中第一个对象的属性:

bottles[0].Brand = "Fanta";
bottles[0].Price = 15;
bottles[0].Kind = "Soda";

缺少的是以下内容:

bottles[0] = new Bottle();

所以总结这里是你在做什么:

//Give me a box big enough to hold 25 bottles
//Set the brand on the first bottle

这就是你应该做的事情:

//Give me a box big enough to hold 25 bottles
//Put the first bottle in the box
//Set the brand on the first bottle

答案 1 :(得分:0)

因为Bottle是一个引用类型,所以这个语句将创建一个包含25个元素的数组,其值为引用类型的默认值,为null。

bottles = new Bottle[25];

因此,您必须在使用前为瓶子[0]指定值。像这样:

bottles[0] = new Bottle();