C# Extension Methods / Erweiterungsmethoden

Erweiterungsmethoden oder im englischen Extension Methods sind dazu gedacht, vorhandenen Datentypen, zum Beispiel string, int, float, etc., Methoden hinzufügen zu können. Erweiterungsmethoden sind statische Methoden und können verwendet werden, ohne den Datentyp abzuleiten oder kompilieren zu müssen.

Damit diese Erweiterungsmethoden beim jeweiligen Datentyp zur Verfügung stehen muss in diesem Bereich die using-Direktive verwendet werden.

Wie man sieht handelt es sich um eine statische Klasse und um statische Methoden. Die Besonderheit ist als Parameter versteckt und zwar (wichtig) als erster Parameter. Dieser gibt nämlich an, für wen diese Methode gilt. An dieser Stelle wird zudem der this-Modifizierer verwendet. In unserem Beispiel können wir in der Methode str verwenden wobei str für den String steht, auf den man diese Methode anwenden möchte. Man kann auch weitere Parameter an die Methode übergeben, dass sieht dann wie folgt aus:

Der Einfachheit halber habe ich das exakt selbe Beispiel verwendet und so angepasst, dass wir die StringSplitOptions als Parameter mit übergeben müssen. Im Quellcode sieht es so aus als wäre es der zweite Parameter, tatsächlich gibt es beim Aufruf später nur einen Parameter, nämlich die stringSplitOptions.

Damit wir auf Strings nun diese Methode aufrufen können, benötigen wir noch die using-Direktive:

Nun können wir die Erweiterungsmethode wie folgt verwenden:

Verwenden wir die Variante 2 mit StringSplitOptions als Parameter würde man die Methode so verwenden:

 


Ein Teil der Quellcodes stammt von der Microsoft-Webseite und sind hier zu finden: https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

[PHP] – Dateiendung von URL

Wer in PHP die Dateiendung einer URL auslesen möchte, dem wird dieses kleine Skript hilfreich sein. Es ist relativ einfach gehalten, funktioniert aber super. Theoretisch könnte man noch eine Prüfung einbauen ob überhaupt eine Dateiendung vorhanden ist, diese habe ich weggelassen.