tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von RudolfG
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
1118
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Aero13 Aero13 ist offline Grünschnabel
    Registriert seit
    Jan 2011
    Beiträge
    2
    Hallo allerseits,

    für einen schulischen Test habe ich 4 Klasse erstellt von dennen jedoch nur 2 hier relevant sind.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    class Person
        {
            private string name = null;
            private Datenbasis _daten = new Datenbasis();
     
            public Person()
            {
     
            }
     
            public Person(String name)
            {
                this.name = name;
                _daten.addPerson(this);
            }
     
            public string getName()
            {
                return name;
            }
        }
    und
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    class Datenbasis
        {
            private List<Person> personenListe;
     
            public Datenbasis()
            {
     
            }
     
            public void addPerson(Person Person)
            {
                personenListe.Add(Person);
            }
     
            public List<Person> getPersonenListe()
            {
                return personenListe;
            }
        }

    Mit Form1 wollte ich die Klassen testen:
    1 Textfeld: txtPerson
    1 Button: butPersonErstellen
    1 ListView: lvPerson
    Code :
    1
    2
    3
    4
    5
    
    private void butPersonErstellen_Click(object sender, EventArgs e)
            {
                Person p = new Person(txtPerson.Text);
                lvPerson.Items.Add(p.getName());
            }

    Nun zu meiner eigentlichen Frage.

    Ich möchte im Konstruktor von Person die damit erstellte Instanz übergeben. In meinem Fall habe ich jedoch keine Insatz und dachte mach könnte es vlt. auch so übergeben, was leider nicht geht.

    public void addPerson(Person Person)
    {
    personenListe.Add(Person); <-- Fehler
    }

    Hier wird eine NullReferenceException geworfen.

    Wie könnte ich das Problem elegant lösen?

    Grüße,
    Aero13
     

  2. #2
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hi,

    du solltest die Liste aber schon vorher erstellen:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    class Datenbasis
        {
            // Die Liste muss mit new erstellt werden, bevor du da Objekte hinzufügen kannst.
            private List<Person> personenListe = new List<Person>();
     
            public Datenbasis()
            {
     
            }
     
            public void addPerson(Person Person)
            {
                personenListe.Add(Person);
            }
     
            public List<Person> getPersonenListe()
            {
                return personenListe;
            }
        }

    Das sollte den Fehler mit der Exception beheben, was du allerdings noch machen möchtest verstehe ich nicht ganz.

    Gruß
    RudolfG
    Geändert von RudolfG (12.01.11 um 16:04 Uhr)
    Aero13 bedankt sich. 
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  3. #3
    Aero13 Aero13 ist offline Grünschnabel
    Registriert seit
    Jan 2011
    Beiträge
    2
    Okay, das wars vielen Dank.

    Mussten nun nur noch aus
    Code :
    1
    
    private Datenbasis _daten = new Datenbasis();
    ein
    Code :
    1
    
    private static Datenbasis _daten = new Datenbasis();
    machen und nun funtkioniert es so, wie es soll.

    Die Form soll nur die Klasse testen, weshalb da lediglich das Textfeld für die Namenseingabe, samt Knopf zum Erstellen sind.
    Außerdem noch die ListView die aufzeigt wer alles angelegt wurde.
    Geändert von Aero13 (12.01.11 um 15:25 Uhr)
     

Ähnliche Themen

  1. Mit einer Klasse Objekte für eine andere Klasse erstellen.
    Von New2Java im Forum Java Grundlagen
    Antworten: 14
    Letzter Beitrag: 21.11.10, 12:37
  2. Wert(e) eines Sliders an eine andere Klasse übergeben
    Von Bandit_profi im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 23.06.09, 18:15
  3. Antworten: 2
    Letzter Beitrag: 02.01.07, 16:27
  4. Eine Variable von einer Funktion an eine andere übergeben
    Von pride im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.08.05, 22:59
  5. Wie kann ich eine Kugel um sich selbst drehen?
    Von Steffenbla im Forum 3D Studio Max
    Antworten: 9
    Letzter Beitrag: 21.02.02, 12:56

Stichworte