Initialisieren Sie ein array von einer Klasse im Konstruktor
Habe ich eine Klasse Garage
hat eine Eigenschaft, die ein array vom Typ Car
, das ist eine weitere Klasse in das Programm. Ich habe versucht, mehrere Iterationen und get run-time-Fehler, die auf die meisten von Ihnen. Ich bekomme eine NullRefernceException
immer wenn ich versuchen zu verkehren es. Dies geschieht in der Program
Klasse, wo ich versuche, auf die length-Eigenschaft des CarLot
array.
Ich weiß, das hat etwas zu tun mit der CarLot
Eigenschaft des Garage
Klasse ein array statt nur Car
. Was Stück vermisse ich hier so, dass das array nicht auf null gesetzt, wenn das Programm versucht, es zu benutzen?
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} ");
}
}
Was ist die genaue exception?
NullReferenceException
auf der Linie g.CarLot..
in der Program-KlasseInformationsquelleAutor wootscootinboogie | 2013-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt mit einer auto-Eigenschaft für das array verwenden, können Sie eine private variable zu initialisieren das array, wenn Sie Ihren parameterlosen Konstruktor aufgerufen wird Main.
z.B.
Alternativ in Ihren parameterlosen Konstruktor für die Garage können Sie voran gehen und das array initialisiert.
So oder so, die array instanziiert werden, bevor Sie Werte zuweisen können.
http://msdn.microsoft.com/en-us/library/aa288453(v=vs. 71).aspx
Cool, freue mich auf Hilfe :).
Emmm mich korrigieren, wenn ich falsch bin, aber Sie sich nicht, müssen Sie die Größe des Arrays
new Car[SIZE]
? Nicht, dass das kompilieren wirdEs wird nicht kompiliert. Und du hast Recht.
Das ist richtig, Entschuldigung für nicht es zu schreiben gibt!
InformationsquelleAutor Timothy Randall
Ich weiß, es ist nicht die genaue Sache, die Sie für Fragen, aber wie wärs mit so etwas ? Wäre es nicht viel einfacher ?
InformationsquelleAutor Dimitar Dimitrov