Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 8 Auflistungsklassen (Collections)
Pfeil 8.1 Grundlagen
Pfeil 8.2 Collections im Namespace »System.Collections«
Pfeil 8.2.1 Die elementaren Schnittstellen der Auflistungsklassen
Pfeil 8.3 Die Klasse »ArrayList«
Pfeil 8.3.1 Einträge hinzufügen
Pfeil 8.3.2 Datenaustausch zwischen einem Array und einer »ArrayList«
Pfeil 8.3.3 Die Elemente einer »ArrayList« sortieren
Pfeil 8.3.4 Sortieren von Arrays mit »ArrayList.Adapter«
Pfeil 8.4 Die Klasse »Hashtable«
Pfeil 8.4.1 Methoden und Eigenschaften der Schnittstelle »IDictionary«
Pfeil 8.4.2 Beispielprogramm zur Klasse »Hashtable«
Pfeil 8.5 Die Klassen »Queue« und »Stack«
Pfeil 8.5.1 Die Klasse »Stack«
Pfeil 8.5.2 Die Klasse »Queue«
Pfeil 8.6 Eigene Auflistungen mit »yield« durchlaufen

Galileo Computing - Zum Seitenanfang

8.2 Collections im Namespace »System.Collections«Zur nächsten Überschrift

In Tabelle 8.1 erhalten Sie einen Überblick über die wichtigsten Auflistungsklassen im Namespace System.Collections.

Tabelle 8.1 Auflistungsklassen im Namespace »System.Collections« (Auszug)

Klasse Beschreibung

ArrayList

Bei dieser Liste handelt es sich wohl um die universellste. Sie nimmt beliebige Objekte auf und gestattet den wahlfreien Zugriff auf die Listenelemente.

BitArray

Verwaltet ein Array von Bits.

CollectionsUtil

Eine Auflistung, bei der keine Unterscheidung zwischen Groß- und Kleinschreibung erfolgt.

Hashtable

Die Elemente werden als Schlüssel-Wert-Paare gespeichert. Der Zugriff auf die Elemente erfolgt über den jeweiligen Schlüssel.

HybridDictionary

Das Verhalten orientiert sich an der Anzahl der Listenelemente. Ist die Anzahl der Elemente gering, operiert diese Klasse als ListDictionary-Collection, wird die Anzahl größer, als Hashtable.

ListDictionary

Solange die Anzahl der Elemente kleiner als zehn ist, werden die Operationen mit den Elementen schneller ausgeführt als bei einer Hashtable.

NameValueCollection

Verwaltet ein Schlüssel-Wert-Paar, wobei sowohl der Schlüssel als auch der Wert durch Zeichenfolgen beschrieben werden. Einem Schlüssel können mehrere Zeichenfolgen zugeordnet werden, d. h., der Schlüssel ist nicht eindeutig.

SortedList

Diese Auflistung verwaltet Schlüssel-Wert-Paare, die nach den Schlüsseln sortiert sind und auf die sowohl über Schlüssel als auch über Indizes zugegriffen werden kann. Damit vereint sie die Merkmale von Hashtable und ArrayList.

StringCollection

Eine Auflistung, die nur Zeichenfolgen enthält.

StringDictionary

Ähnlich einer Hashtable; der Schlüssel ist jedoch immer eine Zeichenfolge.

Diese Klassen unterscheiden sich in den Methoden, mit denen der Zugriff auf die Elemente erfolgt, und in der Speicherverwaltung der Elemente. Jede Listenklasse hat ihre eigene Charakteristik, auch hinsichtlich der Operationen, die auf den Elementen ausgeführt werden können.

Als zwei typische Vertreter der Auflistungsklassen im .NET Framework werden wir uns in diesem Kapitel exemplarisch auf die Charakteristik der beiden Klassen ArrayList und Hashtable konzentrieren und deren wesentlichste Merkmale herausarbeiten. Zunächst einmal möchte ich die beiden Klassen allgemein beschreiben.

Die Klasse »ArrayList«

ArrayList ähnelt einem klassischen Array. Im Gegensatz zu einem herkömmlichen und damit statischen Array ist ein ArrayList-Objekt dynamisch. Sie können so lange Objekte zur Liste hinzufügen, bis dem Speicher regelrecht die Puste ausgeht. Der Zugriff auf ein Element einer ArrayList erfolgt über die Angabe des entsprechenden Listenindex.

Die Klasse »Hashtable«

Die Klasse Hashtable beschreibt eine Liste von Elementen, die im Gegensatz zur ArrayList nicht durch Indizes verwaltet werden, sondern durch ein Schlüssel-Wert-Paar. Der Vorteil eines Hashtable-Objekts ist, dass innerhalb der Liste sehr schnell nach bestimmten Objekten gesucht werden kann. Der Name der Klasse hat seine Ursache darin, dass für die Verwaltung der Elemente ein Hashcode für den Schlüssel verwendet wird. Ein Hashcode ist ein Wert, der aus den Daten eines Objekts gebildet wird und somit für gleiche Objekte gleich ist. Der Zugriff auf ein Element in dieser Liste erfolgt über den Schlüsselwert, der grundsätzlich ein beliebiges Objekt sein kann. In der Praxis wird dazu meist eine Zeichenfolge benutzt.


Galileo Computing - Zum Seitenanfang

8.2.1 Die elementaren Schnittstellen der AuflistungsklassenZur nächsten ÜberschriftZur vorigen Überschrift

Die Grundfunktionalität aller Auflistungen lässt sich auf elementare Methoden zurückführen. Es ist deshalb nicht verwunderlich, dass die Gemeinsamkeiten durch Interfaces beschrieben werden, die von den Auflistungsklassen implementiert werden. Im Wesentlichen handelt es sich dabei um die Schnittstellen

  • IEnumerable
  • ICollection
  • IDictionary
  • IList

Die beiden zuerst aufgeführten Schnittstellen IEnumerable und ICollection werden von allen Standardauflistungsklassen implementiert und stellen Verhaltensweisen sicher, über die jede Auflistungsklasse verfügt.

Das elementare Verhalten einer Auflistungsklasse (also entweder die Indexverwaltung oder die Verwaltung mit einem Schlüssel-Wert-Paar) wird durch die Implementierung des Interfaces IList oder des Interfaces IDictionary beschrieben. IList ist elementar für indexbasierte Auflistungen, IDictionary ist die Schnittstelle der Listen, die durch Schlüssel-Wert-Paare beschrieben werden.

Ohne zu sehr in die Details zu gehen, wollen wir uns nun ein wenig genauer die vier genannten Schnittstellen ansehen.

Die Schnittstelle »IEnumerable«

Die Schnittstelle IEnumerable wird von allen Auflistungen implementiert. Sie ermöglicht, dass eine Liste in einer foreach-Schleife durchlaufen werden kann, und weist nur die Methode GetEnumerator auf, die ein Objekt zurückliefert, das die Schnittstelle IEnumerator implementiert. Dieser Enumerator verfügt über die Fähigkeit, eine Auflistung elementweise zu durchlaufen. Damit gleicht dieses Objekt einem Positionszeiger, dem drei Methoden Current, MoveNext und Reset zu eigen sind.

Der Enumerator positioniert sich standardmäßig vor dem ersten Eintrag einer Auflistung. Um ihn auf den ersten Eintrag und anschließend auf alle Folgeeinträge zeigen zu lassen, muss die Methode MoveNext ausgeführt werden. Mit Current wird auf den Eintrag zugegriffen, auf den der Enumerator aktuell zeigt. Reset setzt den Enumerator an seine Ausgangsposition zurück, also vor den ersten Eintrag.

In Abschnitt 8.6 werden wir noch einmal auf das Interface IEnumerable eingehen, wenn es darum geht, eigene Klassen zu entwickeln, die in einer foreach-Schleife durchlaufen werden können.

Die Schnittstelle »ICollection«

Die Schnittstelle ICollection stellt allen Auflistungen die Eigenschaften Count, IsSynchronized und SyncRoot zur Verfügung, und darüber hinaus auch die Methode CopyTo. Die Eigenschaft Count liefert die Anzahl der Elemente einer Auflistung zurück, die Methode CopyTo kopiert die Elemente in ein Array.

Auflistungen sind kritisch beim gleichzeitigen Zugriff mehrerer Threads. Um diesem Umstand Rechnung zu tragen, wird die Methode Synchronized bereitgestellt. Die Eigenschaft IsSynchronized gibt an, ob die Auflistung synchronisiert wird.

Wegen der gemachten Aussagen ist es nicht verwunderlich, dass praktisch alle Standardauflistungen das Interface ICollection implementieren.

Die Schnittstelle »IList«

Auflistungen, die IList implementieren, verwalten ihre Elemente über Indizes. Das beste Beispiel hierfür dürfte die Klasse ArrayList sein.

Die wichtigsten Methoden, die von IList zur Verfügung gestellt werden, sind Add, Clear, Contains, Insert, IndexOf und Remove. Sie werden Listen, die diese Methoden aufweisen, überall im .NET Framework begegnen: sei es innerhalb der WinForm-API oder bei verschiedenen Klassen von ADO.NET.

Auch die Klasse Array, auf der alle herkömmlichen Arrays basieren, implementiert das Interface IList.

Die Schnittstelle »IDictionary«

IDictionary ist der Gegenspieler von IList. Während IList-implementierende Auflistungen den Zugriff auf die Elemente über einen Index sicherstellen, erfolgt er bei IDictionary-Auflistungen über einen Schlüssel. An dieser Stelle mehr über dieses Interface zu berichten würde zu tief ins Detail führen. Aber wir werden im Zusammenhang mit der Klasse Hashtable noch darauf zu sprechen kommen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de