Wie funktioniert ArrayList

NewPenKid

Mitglied
Hallo wieder einmal,
ich bin nicht zu stoppen.

Bevor es wieder kommt, ja ich hab in MSDN geschaut, aber da werden nur Beispiele zu ints oder strings gegeben.
Ich habe eine Arraylist:
Code:
 ArrayList[] arrEnums = new ArrayList[i];

Es geht um eine Liste von Enums auf die ich zugreifen will und mit einander vergleichen will. Die Enums liegen aber in einer anderen Klasse sagen wir die Klasse heißt TestEnum.

Wie lese ich die Enums in mein ArrayList ein
Brauch ich auch eine Instanz von der anderen Klasse um darauf zuzugreifen
Kann man eigentlich eine zweidimensionale ArrayList machen?

Ich hoffe ihr könnt mir helfen.

Danke schon mal im Voraus :p
 
Enums sind nur eine nette Unterstützung für den Programmierer, da sie doch nur eine, meistens treffende, Beschreibung für einen Integer-Wert darstellen.

"Brauch ich auch eine Instanz von der anderen Klasse um darauf zuzugreifen?"
Kommt darauf an, ob diese Enums public oder static sind.
Einem ArrayList weist man Werte genau gleich zu wie einem normalen Array.
Oder über die Add Methode
Code:
arrEnums.Add(TestEnumObject.Enum1)
In diesem Fall gehe ich davon aus, dass die Eigenschaft Enum1 der Klasse TestEnum nicht static ist und du daher eine Instanz brauchst.

Zweidimensionale ArrayLists gibt es nicht aber was hindert dich daran, eine ArrayList bestehend aus lauter weiteren ArrayLists zu erstellen?

Ich hoffe dir geholfen zu haben. Wenn nicht, dann habe ich wohl das Problem wohl nicht verstanden. Sorry :rolleyes:
 
Enum gehören soweit ich weiß immer zu der Klasse selber, nicht zu einer Instanz.
Sind also sozusagen schon von Haus aus 'static'.

Bei einer Enumerationen nützt einem das Schlüsselwort static deshalb auch nicht viel.

Code:
ArrayList[] arrEnums = new ArrayList[i];

Hier hast du schon ein Array aus Arraylists erstellt. Die ArrayList Collection ist ja schon in der Basisklassenbibliothek vorgegeben, deshalb musst du nicht noch ein Array erstellen. Es reicht:

Code:
ArrayList arrEnums = new ArrayList();

Mit

Code:
arrEnums.Add("Wert")
fügst du der ArrayList dann schnließlich verschiedene Werte hinzu. Vom Welchem Typ diese Variablen sind ist egal.

Enum sind allerdings hauptsächlich dafür da, den Code übersichtlicher und strukturierter zu gestalten. Sie repräsentieren nur einen aufgezählten, beschriebenen, anderen Datentyp (standardmäßig int).

Der Arraylist kannst du deshalb nicht eine direkte Enumeration hinzufügen, da sie eben nur andere Werte enthält und diese beschreibt. Du könntest ihr höchstens die Werte der Enumeration zuweisen:

Code:
arrEnums.Add(CEnumKlasse.enum1.Wert);

Eine andere Möglichkeit wäre, mit der 'Enum.GetNames' Methode die Beschreibung (wenn es dir nur darum geht) der Wete eines Enums in einen Array zu packen und diesem der ArrayList hinzuzufügen:

Code:
string[] eBeschreibungen = Enum.GetNames(typeof(CEnumKlasse.enum1));

Um dann noch an den Wert eines Strings zu kommen könnte man folgendes verwenden und den string wieder in einen aufzählungstyp casten:

Code:
CEnumKlasse.enum1 wert = (CEnumKlasse.enum1)Enum.Parse(typeof(CEnumKlasse.enum1), eBeschreibungen[0], true)
MessageBox.Show("Wert von {0} ist {1}", eBeschreibungen[0], (int) wert);


//EDIT
Es geht um eine Liste von Enums auf die ich zugreifen will und mit einander vergleichen will

Wie sieht die Klasse und die Enums denn aus? Was genau willst du vergleichen?
Vielleicht gibt es dafür ja andere Möglichkeiten.
 
Zuletzt bearbeitet:
Zurück