[.NET] C# 3.0 Feature - Extension Methods

Dieses Thema im Forum "Programmier Tutorials" wurde erstellt von q3mantis, 13. November 2008 .

Schlagworte:
  1. 13. November 2008
    C# 3.0 Feature - Extension Methods

    Hallo Leute!

    Hier mal eine kleine Übersicht über die neuen C# 3.0 Features. Die Sammlung die ich hier reinstelle mag zwar nicht komplett sein aber es sind sachen die ich täglich in der Arbeit häufig brauche.

    1. Extension Methods

    Finde ich sehr nützlich weil man bereits vorhandene Typen die im Framework schon vorhanden sind mit Methoden erweitern kann. "Die" Extension Method für mich ist die "IsNullOrTrimmedEmpty" für string

    Beispiel
    Code:
    
    string _strName = null;
    
    //Würde 'True' ausgeben:
    Console.WriteLine(_strName.IsNullOrTrimmedEmpty());
    
    
    Wie ihr seht kann man selbstgeschriebene Methoden auf bereits vorhandene Typen / Klassen anwenden. Die Methode wie im Codebeispiel gezeigt würde auf Null prüfen und anschließend wenn der string nicht null ist den string trimmen (alle Leerzeichen am Anfang und am Ende entfernen) und danach die Länge prüfen ob diese > 0 ist.

    Hier mal das Komplette Beispiel mit anschließender Erklärung:

    Code:
    
    namespace System
    {
     public static class ExtensionMethods
     {
     public static bool IsNullOrTrimmedEmpty(this string strInputString)
     {
     if(strInputString != null)
     return strInputString.Trim().Length.Equals(0);
    
     return true;
     }
     }
    }
    
    Hier habe ich die statische Klasse "ExtensionMethods" in den Namespace "System" gepackt weil man keinen zusätzlichen Namespace benutzen muss wenn man die Methode aufrufen will.
    Extension Methods müssen sich in statischen Klassen befinden, ebenso müssen die Methoden statisch sein. Der erste Parameter der Methode muss mit dem Schlüsselwort "this" gekennzeichnet sein. Wie ihr sehen könnt ist der erste Parameter vom Typ string also der Typ auf den die Extension Method angewendet werden kann. Würde die Methode so aussehen:
    Code:
    bool IsNullOrTrimmedEmpty(this int Input) { ... }
    
    könnte sie nur auf Int-Variable angewendet werden.
    Zum eigentlichen Verständnis was der Compiler macht ist nichts anderes also aus

    Code:
    _strMyVar.IsNullOrTrimmedEmpty()
    das hier:

    Code:
    IsNullOrTrimmedEmpty(_strMyVar)
    Es erleichtert unwahrscheinlich die Lesbarkeit und das auffinden von bereits vorhandenen Methoden für Framework (oder selbstgeschriebene) Typen.

    Dies war nur ein kleiner Einblick in Extension Methods das genaue wie und warum habe ich mal weggelassen, aber wer es wissen möchte kann mir gerne schreiben. Ich empfehle jedem der mit C# 3.0 an einem etwas größerem Projekt arbeitet diese zu benutzen. Ich habe mir zum Beispiel ein kleines Projekt erstellt welches ich bei jedem Programm dass ich privat schreibe einbinde.. und schon habe ich meine gewohnten ExtensionMethods

    Bis zum nächsten Tut

    mfg
    q3mantis
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.