TOC

This article has been localized into German by the community.

C# 3.0:

Erweiterungsmethoden

Ein weiteres cooles Feature von C#3.0 sind Erweiterungsmethoden. Sie ermöglichen es Ihnen, einen vorhandenen Typ mit neuen Funktionen zu erweitern, ohne den alten Typ zu klassifizieren oder neu zu kompilieren. Beispielsweise möchten Sie vielleicht wissen, ob eine bestimmte Zeichenfolge eine Zahl ist oder nicht. Der übliche Ansatz wäre, eine Funktion zu definieren und sie jedes Mal aufzurufen. Sobald Sie eine ganze Menge solcher Funktionen erhalten haben, würden Sie sie in einer Utility-Klasse zusammenfassen, beispielsweise so:

public class MyUtils
{
    public static bool IsNumeric(string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}

Jetzt können Sie eine Zeichenfolge überprüfen, indem Sie eine Codezeile wie folgt ausführen:

string test = "4";
if (MyUtils.IsNumeric(test))
    Console.WriteLine("Yes");
else
    Console.WriteLine("No");

Mit Erweiterungsmethoden können Sie die String-Klasse jedoch tatsächlich erweitern, um dies direkt zu unterstützen. Dazu definieren Sie eine statische Klasse mit einer Reihe statischer Methoden, die als Bibliothek für Erweiterungsmethoden dienen. Hier ist ein Beispiel:

public static class MyExtensionMethods
{
    public static bool IsNumeric(this string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}

Das einzige, was dies von allen anderen statischen Methoden unterscheidet, ist das Schlüsselwort "this" im Parameterabschnitt der Methode. Sie teilt dem Compiler mit, dass dies eine Erweiterungsmethode für die String-Klasse ist, und das ist alles, was Sie zum Erstellen einer Erweiterungsmethode benötigen. Jetzt können Sie die IsNumeric() -Methode direkt für Zeichenfolgen aufrufen:

string test = "4";
if (test.IsNumeric())
    Console.WriteLine("Yes");
else
    Console.WriteLine("No");
This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!