Erstellen einer Liste mit mehreren, unterschiedlichen Typen in C#

Grundsätzlich ist C# eine sehr stark typisierte Sprache und auch Listen erlauben meistens nur einen definierten Datentyp. Mittels ArrayList kann man diese Einschränkung allerdings ein Stück weit umgehen.

Wenn wir beispielsweise 3 verschiedene Klassen A, B und C haben, können wir diese mit ArrayList in einer Liste zusammen fassen:

class MyClassA { }
class MyClassB { }
class MyClassC { }

ArrayList myList = new ArrayList();
myList.Add(new MyClassA());
myList.Add(new MyClassB());
myList.Add(new MyClassB());
myList.Add(new MyClassA());
myList.Add(new MyClassC());
myList.Add(new MyClassC());

Wir können nun über diese Liste iterieren und die einzelnen Elemente auslesen. Allerdings müssen wir dann wahrscheinlich herausfinden, um welche Art von Element es sich handelt. Das funktioniert so:

foreach (var entry in myList) {
  // Can't use a switch statement here, because cases must be constants.
  if (entry.GetType() == typeof(MyClassA)) {
     // Do something with class A elements.
  }
  else if (entry.GetType() == typeof(MyClassB)) {
    // Do something with class B elements.
  }
  else if (entry.GetType() == typeof(MyClassC)) {
    // Do something with class C elements.
  }
}

Noch keine Kommentare vorhanden.