C# 3.0 - Erweiterungsmethoden
Eine Neuerung von C# 3.0 sind Erweiterungsmethoden. Erweiterungsmethoden bieten die Möglichkeit bereits vorhandene Klassen mit weiterer Funktionalität auszustatten. Dabei können auch Klassen oder Strukturen erweitert werden, die als sealed gekennzeichnet sind oder Bestandteil des .NET Frameworks sind.
In folgendem Beispiel wird System.Int32 um eine Methode erweitert, die den aktuellen Wert mit einem Faktor multipliziert. Dazu wurde eine neue statische Klasse Extension hinzugefügt. Innerhalb dieser Klasse gibt es eine Methode mit dem Namen Multiplizieren. Diese Methode hat zwei Parameter, wobei eigentlich nur der erste interessant ist. Auffällig ist das Schlüsselwort this. Mit Hilfe dieses Schlüsselwortes erweitert der Compiler den Datentyp int um die angegebene Methode.
static class Extension { public static int Multiplizieren(this int instance, int factor) { return instance * factor; } }
Auch im Visual Studio IntelliSense ist diese Methode bereits vorhanden und wird dort mit einem speziellen Symbol und der Kennzeichnung (extension) angezeigt.

Natürlich können Erweiterungsmethoden auch in Verbindung mit generischen Typen verwendet werden. In folgendem Beispiel wird die generische Liste um Methode HasElements erweitert. Diese Methode soll ausgeben, ob Elemente in der Liste enthalten sind.
static class Extension { public static bool HasElements(this List list) { return list.Count > 0; } }
Auch hier wird die neue Methode ebenfalls sofort im IntelliSense angezeigt.


Hallo,
das ist sehr interessant.
Das macht sich wirklich nützlich.
Hab ab und an das Problem bei C++ das ich zwar gute Klassen dank der STL habe, aber dann immer noch zusatz Methoden bei Klassen die eigentlich ganz anderes tun sollen, schreiben müsste.
Das macht C# wieder vorteilhafter für mich
Ich denke, dass kann jeder gut gebrauchen, der eine verbesserte Klasse für Strings etc. schreiben möchte.
Somit kann jeder eine Ableitung für seinen benötigten Datentyp erstellen.
Ziemlich cool das ganze.
MFG Martin
Danke, das hat geholfen!