Visual C# 2011 Grundkurs

Die Klasse "List<T>"

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Das Speichern mehrerer Daten desselben Typs mit Arrays stößt manchmal an seine Grenzen. Sollen nach der Deklaration dynamisch Elemente hinzugefügt werden, bietet sich die Klasse List<T> an.
04:06

Transkript

In diesem Film schauen wir uns einmal an, warum wir, wenn man mehrere Daten zum selben Datentyp mit der Klasse Array speichert, es hin und wieder zu Problemen kommt, die man nicht so wirklich einfach umgehen kann. Und warum es dann wirklich Sinn macht, dass man an der Stelle zur Klasse List(T) greift, die einem da bestimmte Mechanismen bietet, um diese Fehler zu umgehen. Ich hab schon mal eine Konsolenanwendung geöffnet. In dieser Konsolenanwendung deklariere ich mir jetzt mal ein String Array mit dem Namen "Name" und in diesem String Array lege ich mir jetzt mal ein paar Namen an z.B. mein Name und der Bodo. Jetzt hab ich dieses Array hier oben deklariert und wenn das ausgefüllt wird, dieser Bereich, dann wird im Speicher Platz alloziert für genau zwei Strings. Wenn ich im späteren Verlauf irgendwann mal feststelle, dass noch ein dritter Name hinzukommt, kann ich das nicht so ohne Weiteres hinzufügen, weil meine Array eben nur zwei Elemente hat. Ich kann natürlich jetzt hingehen und kann ein Array mit drei Elementen erstellen und das alte Array in das Neue kopieren und das neue Element hinten anhängen, aber das ist nicht wirklich performant. In diesem Fall jetzt hier würde es noch funktionieren, das würde auch sehr schnell funktionieren, aber wenn man sehr viele Datensätze hätte, würde das halt irgendwann sehr langsam. Und das Ganze kann man mit der Klasse List(T) umgehen. List(T) ist eine Klasse, die im .NET Framework schon mitgeliefert wird. Das Besondere an dieser Klasse ist, dass es eine generische Klasse ist. Generische Klassen haben intern einen Typparameter und z.B. diese Liste verwaltet Objekte von einem bestimmten Typ und dieser Typ ist T. Und ich kann jetzt hier bei der Deklaration der Liste, kann ich angeben, welchen Typ Parameter ich für dieses T einsetzen will. Wenn ich jetzt hier sage, ich möchte z.B. für den Typparameter einen String verwenden, also setz ich in den spitzen Klammern, sage dann, ich nenne das mal "Names", um Namenskollisionen zu vermeiden und sage dann hier "New List von String". Dann habe ich so eine generische Liste erstellt, mit dem generischen Typparameter T als String. Das heißt, dass es eine Liste ist, die intern Strings verwalten kann. Und ich kann jetzt hier, genau wie bei einem Array, hingehen und kann dort Elemente erstellen und dann machen wir mal dasselbe wie oben auch, mit demselben Namen. Wenn ich jetzt in dieser Klasse hingehe und später, nach der Deklaration feststelle, Moment, mir fehlt noch ein Name, z.B. die Lisa, dann kann ich das hier ohne Weiteres machen. Wenn ich nebst Aufrufe mir mal die Methoden anzeige, dann hab ich hier eine ganze Menge von Methoden, die ich aufrufen kann auf dieses Objekt und unter anderem ganz oben ist die Methode Add. Man sieht schon im Visual Studio, dass dieses Add ein Item übergeben haben möchte und das ist vom Typ String, eben genau der Typparameter, den ich oben angegeben hab. Wenn ich also Add aufrufe, kann ich ihm ein Objekt vom Typ String übergeben - das ist mal Lisa - und damit hab ich diese Liste dynamisch um ein Element erweitert. Ich setze mal hinter das Hinzufügen von Lisa einen Breakpoint und führen das ganze Programm oben aus. Erhält er an dieser Stelle, man sieht schon, Count gleich 3, es sind also drei Elemente drin, d.h., wenn man sich das hier anguckt, es sind die Elemente David, Bodo und Lisa drin , ich habe also diese Liste noch nach der Deklaration dynamisch erweitert. So, Listen dynamisch erweitern ist nur ein Punkt, ich kann auch in dieser Liste ohne Weiteres hingehen und kann sagen "Names remove" und dann nehme ich z.B. mich wieder aus der Liste raus. Wir führen das ganze nochmal aus, schauen uns die Names an, es ist nur noch ein Count von 2 und es ist nur noch der Bodo drin und die Lisa ist drin. Das alles geht vollkommen dynamisch, ohne dass ich da noch irgendwas zu tun muss und intern wird das alles von dieser Klasse List(T) verwaltet. Und diese Klasse List ist wie gesagt beim .NET Framework bereits enthalten, wir können die nutzen, wenn wir die entsprechenden Referenzen eingebunden haben. Wir haben uns in diesem Film angeguckt, welche Probleme es gibt, wenn ich Objekte von einem Datentyp mit der Klasse Array speichere, diese Probleme lassen sich auf gewisse Art und Weise umgehen, aber leider ist es keine wirklich schnelle und performante Lösung. Besser ist es da, List(T), zu verwenden, List von T erweitert einen generischen Typparameter T, den ich ihm übergebe, in diesem Fall war es ein String und dann speichert diese Liste eben halt Objekte von diesem Typ T. Dann kann ich auch hingehen und kann nach der Deklaration von dieser Liste dynamisch Objekte hinzufügen, löschen, drin suchen, und was man sonst noch gerne machen möchte.

Visual C# 2011 Grundkurs

Steigen Sie in die C#-Programmierung ein und lernen Sie sowohl die Grundlagen der Sprache C# als auch die Entwicklungsumgebung Visual Studio 2010 und .NET-Framework kennen.

7 Std. 28 min (81 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Visual Studio Visual Studio 2010
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.06.2011

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!