Hallo zusammen,
ich möchte eine Personenliste erstellen. Dazu möchte ich im Falle einer Änderung die alten Daten behalten.
Folgende Idee hatte ich, die allerdings in einer NullReferenzException endet:#
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
List<Person> personenliste = new List<Person>();
Person person = new Person();
person.Name = "NeuerName";
personenliste.Add(person);
personenliste[0].Verlauf[0].Name = "AlterName";
}
}
public class Person
{
public string Name { get; set; }
public Person[] Verlauf { get; set; }
}
}
auch folgender Versuch schlägt fehl:
person.Verlauf.SetValue(person, 1);
wie bekomme ich denn den aktuellen Namen in den "Verlauf" kopiert?
Danke vorab.
Bitte beachte in Zukunft [Hinweis] Wie poste ich richtig?
2.1 Im richtigen Forum posten
3. Aussagekräftigen Titel wählen
public Person[] Verlauf { get; set; }
Du erstellst ja auch keine Instanz von dem Array
Hey,
danke für Deine Antwort,
aber wie soll ich von diesem Array eine Instanz erstellen?
Person[] ver = new Person[6];
klappt zwar, aber wenn ich dann den Namen zuweisen will
ver[0].Name = "Hallo";
endet das wieder in einer NullReference.
Hallo,
am einfachsten wird es wenn du deine Personenklasse weiter aufdröselst.
Wie wäre es mit etwas wie folgendem:
public class Person
{
private string _name;
public string Name
{
get { return this._name; }
set
{
if(this._name == value)
return;
this.UpdateName(value);
}
}
private List<Person> _verlauf = new List<Person>();
public Person[] Verlauf => this._verlauf.ToArray();
private void UpdateName(string newName)
{
this._verlauf.Add(new Person{
Name = this.Name
});
this.Name = newName;
}
}
Ist ungetestet und nur mal eben aufgelistet wie es sich wohl am einfachsten bewerkstelligen liese.
Dein eigentliches Problem jedoch ist, dass du ja keine neue Personen-Instanz zum Array hinzufügst sondern tatsächlich nur ein Array mit NULL-Werten erzeugt hast.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
endet das wieder in einer NullReference.
Wenn Du das mit den Referenzen nicht verstehst, dann schau Dir nochmal an, wie C# funktioniert und was OOP ist.
[FAQ] Wie finde ich den Einstieg in C#?
Es bringt Dir nichts, wenn Dir hier jemand Dein Quellcode korrigiert, aber Du die Ursache nicht verstehst.
Und das sind ganz ganz frühe C# Basics 😃
Ansonsten auch:
[FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Wenn das sowas wie "Undo" werden soll, dann gibts dafür den Momento-Pattern.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code