Suchen und Finden
Service
Infos und Kontakt
Kapitel 6 Iteratoren und partielle Typen (S. 238-239)
6.0 Einführung
Zwei der vier wichtigsten neuen Features in C# 2.0 sind Iteratoren und partielle Typen. Iteratoren ermöglichen es einem Codeblock, eine geordnete Sequenz von Werten zu liefern. Partielle Typen ermöglichen es, verschiedene Teile einer Klasse an verschiedenen Orten vorzuhalten.
Iteratoren sind ein Mechanismus, mit dem eine Klasse Daten über das foreach-Schleifenkonstrukt enumerieren kann. Allerdings sind Iteratoren noch viel flexibler. Sie können einfach eine Sequenz von Daten erzeugen, die vom Enumerator zurückgeliefert wird. Die Sequenz muss nicht im Voraus hartkodiert werden. Beispielsweise könnten Sie einfach einen Enumerator schreiben, der auf Verlangen die Fibonacci-Sequenz generiert. Ein weiteres flexibles Feature von Iteratoren ist, dass Sie keine Grenze für die Anzahl von Werten festlegen müssen, die der Iterator zurückliefert. Das heißt, dass Sie beispielsweise dynamisch festlegen können, wo die Herstellung der Fibonacci-Sequenz beendet werden soll.
Bei früheren Versionen des .NET Framework mussten Sie mehrere Schritte durchführen, damit das foreach-Konstrukt auf Ihrem Typ operieren konnte. Erst mussten Sie auf Ihrem Typ das Interface IEnumerable implementieren. Dann mussten Sie das Interface IEnumerator auf einem anderen Typ implementieren. Dieser zweite Typ hat dann die eigentliche Arbeit erledigt, die für die Nutzung der foreach-Funktionalität erforderlich ist. Und dann mussten in diesem Typ noch die Methoden MoveNext und Reset sowie das Property Current von Hand geschrieben werden.
Iteratoren ermöglichen es Ihnen, diese Arbeiten an den C#-Compiler zu delegieren. Bei der Version 2.0 des C#-Compilers müssen Sie erheblich weniger Arbeit leisten, wenn Sie einem Typ die Fähigkeit geben wollen, in einer foreach-Schleife verwendet zu werden. Jetzt müssen Sie Ihrem Typ nur noch einen Iterator hinzufügen. Ein Iterator ist ein Member in Ihrem Typ (d.h. eine Methode, eine Operator-Überladung oder der get-Akzessor für ein Property), das entweder einen System.Collections.IEnumerator, einen System. Collections.Generic.IEnumerator
Partielle Typen erlauben es Entwicklern, die Definition eines Typs in mehrere Bereiche aufzuspalten. Der Typ kann sich in mehreren Dateien, mehreren Bereichen einer Datei oder in mehreren Bereichen mehrerer Dateien befinden. Wenn Sie einen Typ als partiell deklarieren, sagt das dem C#-Compiler, dass dieser Typ an diesem Ort eventuell nicht vollständig vorhanden ist und er nicht vollständig kompiliert werden kann, bis die anderen Teile gefunden worden sind oder das Ende der Liste der zu kompilierenden Module erreicht worden ist. Partielle Typen sind ein Feature, das rein über den Compiler implementiert ist und keinerlei Auswirkungen auf den IL-Code hat, der für die Klasse generiert wird. Die wichtigsten Beispiele für die Verwendung partieller Typen finden Sie in der Visual Studio IDE. Dort werden sie vom Designer genutzt, um den vom Designer generierten Code von der UI-Logik zu trennen, die der Entwickler schreibt. Sie werden außerdem im Erstellungscode für DataSets verwendet, der auf einer XML-chema-Definition der Daten basiert. Auch wenn partielle Typen ein rein Compiler-basiertes Feature sind, können Sie sie in ein paar Situationen, die in den Rezepten 6.8 und 6.9 skizziert werden, vorteilhaft einsetzen.
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion























