Semplicemente lo contrassegna come un metodo di estensione, questo è il formato con cui hanno scelto di definire il metodo come metodo di estensione, al contrario di un metodo statico semplice (che è come viene chiamato internamente in ogni caso). Questo è solo per il compilatore (e intellisense), sotto le copertine il codice viene compilato come se si stesse chiamando direttamente il metodo statico.
Questa definizione di un metodo:
public static int ToInt(string number) //non extension
aveva bisogno di essere distinguibile da questo:
public static int ToInt(this string number) //extension
In caso contrario si avrebbe intellisense contenente ogni metodo statico in una classe statica in spazi dei nomi inclusi, molto indesiderabile.
fonte
2010-04-04 12:10:12
Personalmente avrei preferito un attributo. Qualcosa come [Extends (typeof (foo)] e quindi aveva una variabile implicita chiamata value, simile alle proprietà.Esso sarebbe stato più espressivo e non richiesto un riutilizzo di una parola chiave esistente.Ma solo la mia opinione personale – John
Scott Hanselman ha una buona articolo che spiega l'importanza della parola chiave "this" http://www.hanselman.com/blog/HowDoExtensionMethodsWorkAndWhyWasANewCLRNotRequired.aspx – Zaffiro