Erweiterungsmethode
# Erweiterungsmethode

| Beteilige dich an der Diskussion! | Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+) |
| - | - |

Als Erweiterungsmethode (engl. extension method) wird unter .Net-Framework eine Methode bezeichnet, die eine Klasse oder Schnittstelle erweitert, ohne Teil der Implementierung der erweiterten Klasse zu sein. Es wirkt dabei nur auf den ersten Blick wie Mehrfachvererbung. Es handelt sich dabei allerdings um syntaktischen Zucker, also einen Compilertrick, der die Erweiterungsmethode der Klasse zuordnet.

## Anwendung

Erweiterungsmethoden werden in C# in einer statischen Klasse als statische Methode und in Visual Basic in einem Module definiert.

In C# definiert das Schlüsselwort this vor dem ersten Parameter den zu erweiternden Typen; in VB wird der erste Parameter übernommen, sofern die entsprechende Methode das Attribut ExtensionAttribute hat.

Der Parameter, der erweitert wird, wird beim Aufruf nicht mit übergeben.

## Beispiel (C#)

Im C#-Beispiel soll die Klasse System.String um eine weitere Substring-Anweisung ergänzt werden:

Verwendung:

## Vorteile

* Erweiterung beliebiger Klassen, auch Klassen, die als sealed (C#) bzw. NotInheritable (VB) definiert sind, wie System.String
* Hinzufügen einer konkret implementierten Methode an ein Interface und damit an alle darauf aufbauenden Klassen (z. B. IList)
* Es ist nicht mehr nötig ganze Klassen abzuleiten um eigene Features hinzuzufügen

## Nachteile

* Extensions werden durch eine using- (C#) bzw. Imports- (VB) Direktive verfügbar. Hier können Namespacekonflikte entstehen.
* Durch intensive Verwendung von Extension Methods kann der Code unübersichtlich werden
