Ich bin sehr neu in C# und das Reich der Programmierung. Ich habe einige Übungen in Büchern und YouTube-Videos durchgeführt, um mich mit vielen dieser Konzepte vertraut zu machen.Übergeben von Parametern an einen Konstruktor, die Eigenschaften einer Objektklasse sind
Momentan stecke ich in diesem Problem fest. Ich habe eine kleine Anwendung für einen Konsignationsladen, und ich arbeitete daran, die fest codierten Beispieldaten zu entfernen und das Programm Daten aus Textdateien lesen zu lassen.
Hier ist meine Herstellerklasse:
public class Vendor
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Vendor(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
Dies resultiert im Wesentlichen meiner CSV-Datei von Vendors nimmt und sie in eine String-Array schiebt, erstellt das Objekt und füllt es Eigenschaften mit Array-Werten ist, dann das Element ergänzt eine Liste vom Typ Lieferant. Diese Methode löst keine Fehler aus.
private void ReadFromFile()
{
string line = "";
while ((line = myReader1.ReadLine()) != null)
{
string[] data = line.Split(',');
Vendor v = new Vendor(data[0], data[1]);
store.Vendors.Add(v);
}
}
Wenn ich diese gleiche Lösung versuchen, für Artikel zu einer Liste hinzugefügt, ich möchte in den „Besitzer“ passieren des Elements, die eine Eigenschaft des Typs Vendor ist, in meinem Artikel Klasse befindet. Da ich keine funktionierende Lösung für die Übergabe eines Objekts als Parameter im Konstruktor erhalten konnte, entschied ich mich, bei der Übergabe formaler Datentypen zu bleiben. Ich möchte im Grunde die Eigenschaften des Verkäufers von Vorname & Nachname verwenden und diese als den Vor- und Nachnamen des Elementbesitzers festlegen.
public class Item
{
public string Title { get; set; }
public decimal Price { get; set; }
public Vendor Owner { get; set; }
public Item(string title, decimal price, string fName, string lName)
{
Title = title;
Price = price;
Item.Owner.FirstName = fName; // this is what I want to do
Item.Owner.LastName = lName; // throws objref error
}
}
//Input file format: title,price,fname,lname
while ((line = myReader2.ReadLine()) != null)
{
string[] data2 = line.Split(',');
decimal price = decimal.Parse(data2[1]);
Item i = new Item(data2[0],price,data2[2],data2[3]);
store.Items.Add(i);
}
Die Saiten machen es in das Array, aber wenn ich den Debugger ausführen und überprüfen Sie meine store.Items Liste wird jede Eigenschaft Wert mit Ausnahme von Besitzern, die null ist. Ich weiß, eine Lösung könnte sein, irgendwie fName + lName in eine Zeichenfolge zu kombinieren, aber es fällt mir schwer zu verstehen, wie mein Item-Konstruktor in Bezug auf die Parameter eingerichtet werden muss, die er akzeptiert. Egal, was ich versuche, die Oner-Eigenschaft erhält nie einen Wert, der den Rest meiner Anwendung zum Absturz bringt.
Ich habe für ein paar Stunden daran gearbeitet, aber ich kann nicht scheinen, eine funktionierende Lösung oder sogar einen Workaround zu diesem Szenario zu finden.
Jede Hilfe wird sehr geschätzt.
Danke!
Dieser arbeitete wie ein Charme, vielen Dank für die schnelle Antwort! Und ja, in dem Code, den ich gepostet habe, habe ich es nicht kompiliert, ich wollte nur die Idee von dem zeigen, was ich erreichen wollte. Danke noch einmal! –