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:

for (int i = 0, len = myList.Count; i < len; i++) {
  switch (myList[i].GetType()) {
    case typeof(MyClassA):
      // Do something with class A elements.
      break;

    case typeof(MyClassB):
      // Do something with class B elements.
      break;

    case typeof(MyClassC):
      // Do something with class C elements.
      break;
  }
}

Noch keine Kommentare vorhanden.