Non, elles ne s'appliquent pas à toutes les langues. Ils sont une fonctionnalité spécifique à la langue, offerte par C# et Visual Basic (d'autres langues peuvent les avoir adoptées depuis, je ne sais pas). Le but d'eux est de fournir une syntaxe pratique pour appeler des méthodes utilitaires sur une classe ou une interface. En C# 2, une méthode de service serait appelé par une classe statique, en passant l'argument de la manière habituelle:
IEnumerable<string> someStrings;
int count = EnumerableHelpers.Count(someStrings);
Avec des méthodes d'extension, ce qui peut être écrit plus facilement en utilisant quelque chose qui ressemble à la syntaxe normale de la méthode membre:
int count = someStrings.Count();
même si le comte() n'est pas membre de l'interface IEnumerable<string>
. Les méthodes d'extension vous permettent donc d'apparaître à ajouter des membres à des classes ou des interfaces que vous ne contrôlez pas.
Voir http://stackoverflow.com/questions/tagged/extension-methods+c%23 –