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.
