2

プログラム内の別のクラスであるGaragetype の配列であるプロパティを持つクラスがあります。Car何度か繰り返してみましたが、ほとんどで実行時エラーが発生しました。NullRefernceException実行しようとするたびに取得します。これは、配列 Programの長さプロパティにアクセスしようとするクラスで発生します。CarLot

CarLotこれは、クラスのプロパティGarageが単なる ではなく配列であることと関係があることを知っていますCar。プログラムが配列を使用しようとしたときに配列が null に設定されないように、ここで欠けている部分は何ですか?

class Program
{
    static void Main(string[] args)
    {
        Garage g = new Garage();
        //this is where the exception occurs
        g.CarLot[0] = new Car(5, "car model");
        Console.ReadLine();
    }
}

public class Garage 
{
    public Car[] CarLot { get; set; }
    public Garage() { }
    //this should be able to be 0 or greater
    public Garage(params Car[] c)
    {
        Car[] cars = { };
        CarLot = cars;
    }
}

public class Car
{
    public int VIN { get; set; }
    public int Year { get; set; }
    public string Model { get; set; }
    public Car(int _vin, string _model)
    {
        _vin = VIN;
        _model = Model;
    }
    public Car() { }
    public void Print()
    {
        Console.WriteLine("Here is some information about the car {0} and {1} ");
    }
}
4

2 に答える 2

2

配列に auto プロパティを使用する代わりに、プライベート変数を使用して、パラメーターなしのコンストラクターが Main で呼び出されたときに配列を初期化できます。

例えば

private Car[] carLot = new Car[size];
public Car[] CarLot
{
     get { return carLot; }
     set { carLot = value; }
}

または、Garage のパラメーターなしのコンストラクターで、その時点で配列を初期化することもできます。

いずれにせよ、配列に値を割り当てる前に、配列をインスタンス化する必要があります。 http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx

于 2013-04-18T03:01:59.630 に答える