Нет, они не распространяются на все языки.Они являются языковой функцией, предлагаемой C # и Visual Basic (другие языки, возможно, приняли их с тех пор, я не знаю).
Суть в том, чтобы предоставить удобный синтаксис для вызова служебных методовна классе или интерфейсе.В C # 2 служебный метод вызывается через статический класс, передавая аргумент обычным способом:
IEnumerable<string> someStrings;
int count = EnumerableHelpers.Count(someStrings);
С помощью методов расширения это можно написать более удобно, используя что-то, похожее на обычный метод-членсинтаксис:
int count = someStrings.Count();
, хотя Count () не является членом интерфейса IEnumerable<string>
.Таким образом, методы расширения позволяют показывать добавление членов к классам или интерфейсам, которые вы не контролируете.