Tipp der Woche 06.10.2022, 14:04 Uhr

.NET/VB: Erweiterungsmethoden

Eigene Erweiterungsmethoden machen .NET-Programmcode besser lesbar.
(Quelle: B. Lauer)
Jeder der mit .NET programmiert weiß, dass man hinter den Namen eines Objektes einen Punkt setzen kann und -- sofern man Visual Studio benutzt -- die IntelliSense-Funktion sogleich die für das Objekt bereitstehenden Methoden angezeigt werden. Man muss nur die passende auswählen. Die Liste der vorhandenen Methoden kann man nicht nur bei eigenen Klassen erweitern, sondern auch bei fest in .NET eingebauten Klassen, wie beispielsweise String oder Date. Es gibt viele Anwendungen für Erweiterungsmethoden. Die klassische ist, dass man eine nicht vorhandene Methode hinzufügt und dann beispielsweise schreiben kann:
MsgBox(Today.Kalenderwoche) 
Genauso nützlich ist es, vorhandene Funktionen, deren Syntax man sich einfach nicht merken kann, unter einem sprechenden Namen noch einmal einzubauen. Für mich persönlich ist so ein Beispiel die String-Funktion PadLeft. Sie verlangt die Eingabe der endgültigen Länge des Ergebnisstrings und das Zeichen mit dem von links her aufgefüllt werden soll, also beispielsweise so:
x = 1
MsgBox(x.ToString.PadLeft(2, "0"))
Ausgabe:
01
Das ist auch genau der Zweck für den ich diese Funktion immer brauche. Sie sorgt dafür, dass die Ausgabe mindestens 2 Ziffern hat. Deshalb habe ich mir daraus die Erweiterungsfunktion min2Ziffern gebaut. Diesen Namen kann ich mir merken, er lässt sich leicht lesen/verstehen und er braucht eine Eingabe weniger, weil die 2 ja schon im Namen steht. Das sieht dann so aus:
<Extension()>
Public Function min2Ziffern(ByVal Zahl as String) as String
  Return Zahl.PadLeft(2, "0")
End Function

' Anwendung:
x = 1
MsgBox(x.ToString.min2Ziffern)
Übrigens schneidet PadLeft nichts ab, wenn ein längerer String übergeben werden sollte. Zwei Voraussetzungen sind zu beachten, dass dieser Code mit Visual Basic funktioniert:
  1. Erweiterungsfunktionen können nur in Modulen enthalten sein (sonst klappts nicht).
  2. Das Modul muss den Namensraum System.Runtime.CompilerServices importieren.
Wer wissen möchte, wie weit man mit Erweiterungsmethoden kommt, der sollte den für Heft 11 der dotnetpro (erscheint am 20. Oktober 2022) geplanten Artikel "Unser Code muss schöner werden" von Bernhard Pichler lesen. Er nutzt C# und zeigt, was man mit Erweiterungsmethoden, LINQ und Lambda alles machen kann, um Code verständlicher, schöner und letztendlich fehlerfreier zu machen.


Das könnte Sie auch interessieren