2010-11-26 6 views

Antwort

7

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.

4

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.

See example of Extension Methods

+0

+1 für den Hinweis auf Erweiterungsmethoden –

+1

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

3

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.

+0

Danke. :) +1 – Pavitar