Re[3]: Concat, Distinct по строке
От: m2user  
Дата: 18.10.23 16:04
Оценка:
ET>да, не обратил внимание сначала. но тут вопросики.

ET>когда делаешь над объектом string вызов метода ожидается что его обработает класс string или его предки. Как из string вывелся IEnumerable<char> ?


Так работают extension методы.

https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

Методы расширения позволяют "добавлять" методы в существующие типы без создания нового производного типа, перекомпиляции и иного изменения первоначального типа.
Методы расширения представляют собой разновидность статического метода, но вызываются так же, как методы экземпляра в расширенном типе.
Для клиентского кода, написанного на языках C#, F# и Visual Basic, нет видимого различия между вызовом метода расширения и вызовом методов, определенных в типе.


https://learn.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable.concat?view=net-7.0
public static System.Collections.Generic.IEnumerable<TSource> Concat<TSource> (this
System.Collections.Generic.IEnumerable<TSource> first,
System.Collections.Generic.IEnumerable<TSource> second);

String.Concat статический, поэтому может быть вызван только через имя типа, а не имя экземпляра, в отличие от extension метода IEnumerable<Char>.Concat.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.