In C# kann man keine Typen erben oder erweitern, die mit der Zugriffsmarkierung „sealed“ versehen sind. In der Version 3.0 kann der Entwickler beliebige Klassen erweitern – selbst Klassen, die als „sealed“ markiert sind. Wenn man etwa der String-Klasse eine Methode NoSpaces() hinzufügen wollte, könnte man eine Erweiterungsmethode wie in Listing A definieren.
Listing A:
Wenn diese Erweiterungsmethode in eine Klasse importiert wird, können Entwickler die Methode NoSpaces() für jeden in der Klasse enthaltenen String aufrufen.
Der erste Parameter der Erweiterungsmethode legt fest, für welche Typen die Erweiterungsmethode zur Verfügung steht. In diesem Fall weist „this string data“ darauf hin, dass die Erweiterungsmethode auf die String-Klasse angewandt werden soll. Falls die Erweiterungsmethode mit „this object data“ deklariert werden würde, stünde die Methode für jedes Objekt zur Verfügung.
Um anzugeben, dass Erweiterungsmethoden importieret werden sollen, muss einfach eine using-Anweisung für deren Namensraum eingefügt werden. Soll zum Beispiel die oben beschriebene Methode verwendet werden, ist die Anweisung using MyExtensionMethods in der Klassendatei erforderlich (Listing B).
Listing B:
Zu beachten ist, dass Erweiterungsmethoden Instanzmethoden nachgeordnet sind. Sollte also eine Instanzmethode mit derselben Signatur wie eine Erweiterungsmethode vorhanden sein, wird die Instanzmethode ausgeführt.
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…
Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.
Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…
Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.