Так и есть. Я их использую как раз чтобы не копипастить.
@Sufir, ты привел простейший случай. А что если мы добавляем функционал к классу или интерфейсу, и хотим юзать все его методы? В C# основной функционал манипулирования коллекциями объектов - LINQ - это просто набор методов-расширений для интерфейсов. Фактически, более приятный аналог трейтов.
Метод-расширение - это когда мы к любому классу или интерфейсу можем добавить метод извне.
Пишем например public static AdditionalMethod(this ICollection target){...} и это ключевое this даёт нам для ЛЮБОГО ICollection делать так - collection.AdditionalMethod();
Linq - мощный механизм и используется почти в любом приложении C#.
можно например так:
PHP:
var persons = new List<Person>(); // List это и IList и ICollection и IEnumerable - любят они там кучу вложенных друг в друга интерфейсов.
// добавляем тут персон в список
var maleAverageAge = persons.Where(p => p.IsMale).Average(p => p.Age);
Очень мощно и удобно. И реализовано такими вот методами расширениями. List ничего не знает о Where или Average. в PHP кстати тоже было бы удобно просто трэйт извне к классу добавить, вместо наследований там...
P.S. Хотя сейчас дошло что из-за автолоадингов наших, о таких мечтах можно забыть
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)