Was ist der Unterschied zwischen Extension Methods
und Methods
in C#?Unterschied zwischen Erweiterungsmethoden und Methoden in C#
Antwort
Ich denke, was Sie wirklich suchen, ist der Unterschied zwischen Static and Instance Methods
Am Ende des Tages Erweiterungsmethoden einige schöne Compiler Magie und syntaktischer Zucker, die es Ihnen ermöglichen, eine statische Methode aufzurufen als wäre es eine Methode, die für diese bestimmte Klasseninstanz definiert wurde. Es ist jedoch NICHT eine Instanzmethode, da die Instanz dieser bestimmten Klasse in die Funktion übergeben werden muss.
ExtensionMethods: Sie können einen Methodensatz für eine Klasse definieren, ohne einen weiteren Vorteil gegenüber der Vererbung zu untergliedern.
Methoden: Sie werden für die Implementierung der Operation für die Klasse definiert.
Ein wirklich nettes Feature von Erweiterungsmethoden ist, dass sie auf null Objekte aufgerufen werden können, sehen folgendermaßen aus:
myclass x = null;
x.extension_method(); // this will work
x.method(); // this won't
Es ist schade, dass zum Beispiel die meisten Methoden der Zeichenfolge sind nicht Erweiterungsmethoden, nachdem alle
x.ToLower();
sollte null zurück, wenn x null ist. Ich meine, es wäre nützlich.
Wenn ich solche Null-Transparenz brauche, schreibe ich lieber Erweiterungsmethoden.
Danke. :) +1 – Pavitar
+1 für den Hinweis auf Erweiterungsmethoden –
Sie können immer noch eine Erweiterungsmethode aufrufen, als wäre es eine normale Methode. Sie sind nicht darauf beschränkt, die Klasse, die sie erweitert, abzurufen. – Phill