Wie Felder in einem KlassenObjekt handeln?

Cortadillo

Mitglied
hallo,

habe eine Klasse

public Komponentenklasse(int KompID, String KomponentenName,String[] Parents)
{
_id = KompID;
_komponentenName = KomponentenName;
_parents= Parents;

}

public String[] Parents
{
get { return _parents; }
set { _parents = value; }
}

wie behandle ich das Feld innerhalb der Klasse?

der Befehl
"KompKlasse.Parents[counter] = _help3;"
meldet eine NullReferenceException
(und Tip ist, mit new nen neues Objekt aufzurufen,
das betreffende Objekt ist aber mit
Komponentenklasse KompKlasse = new Komponentenklasse(i, null, null);
aufgerufen

wer kann helfen=
 
Hi

Wenn du _parent = null setzt ist es klar, dass du eine NullReferenceException bekommst. Das Array ist dann nicht instanziiert.
entweder solltest du die Klasse so instanziieren:
C#:
KomponentenKlasse components = new KomponentenKlasse(1, "name", new string[3]);
oder du prüfst im Konstruktor, ob dir sinnvolle Werte übergeben wurden und ersetzt die ggf. durch Sinnvolle.
Prinzipiell solltest du es jedoch vermeiden, die Klasse mit Null-Werten zu initialisieren. Wie du siehst führt dies zu Problem. Vorallem bei Array solltest du prüfen, ob das Array auch die entsprechende Größe hat, ansonsten würde dies auch zu einer IndexOutOfRangeException führen.

PS: Bitte setze den QuellCode in die entsprechenden Code-Tags (code, csharp, vbnet, sql, php, ...). Das macht die Sache leichter zu lesen. Danke
 
hi,


da ich das erste mal so mit Feldern arbeite:
hab da Probleme mit der Deklaration in der Klasse:
Code:
public Komponentenklasse(int KompID, String KomponentenName,int ParentNumber, String[] Parents)


wie mache ich das im Konstruktor?
Code:
this._parents= Parents[];
geht nicht - logisch, ich will ja nen Feld zurück haben


bei folgendem fällt mir auch nix bzgl. anwendung in Feldern
Code:
public String[] Parents
        {
            get { return _parents[]; }
            set { _parents = value; }
        }


vielen Dank
 
Zuletzt bearbeitet:
Zurück