サイトー
про ienumerable (где тоже можно про getenumerator объявить) Тепляков вроде предполагал что это нужно для каких-то внутренних оптимизаций фреймворка
サイトー
со struct мне кажется потому что хоть и можно имплементировать интерфейс, приведение к интерфейсу выделит память в куче
サイトー
а так можно уточкой, кря кря
x
Select - экстеншон метод на IEnumerable.
почему только на Ienumerable?
Hog
почему только на Ienumerable?
https://github.com/Microsoft/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs
x
Ну я хз почему в данном случае нельзя просто интерфейсом обойтись
потому что реализовывать всё равно самому, а особой ценности знание того что это какой-то интерфейс не несёт? так полагаю. это ж для компилятора токо
x
https://github.com/Microsoft/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs
не поверишь, но ты так можешь навесить на любой класс и компилер позволит тебе писать select h from myClass where .... и тд
x
энумерабл просто частный случай
x
что-то типа замены билдеров для с#
Hog
Экстеншон метод. Интерфейс ни при чём
x
ну. А я о чем?
Hog
А там наоборот.
Hog
Какая-то сверхнеявная имплементация интерфейса. Или я что-то не так понял.
x
где - там? в диспозабле? что-то я не проснулся ещё сори
Hog
В той новой фиче. Нет там интерфейса - достаточно метод диспоз.
x
В той новой фиче. Нет там интерфейса - достаточно метод диспоз.
а, я понял. Ты думаешь что чиобы работал linq нужно отнаследовать ienumerable? это не так.
Aleksandr
Пример можно?
Aleksandr
Сигнатуры методов из linq просто с тобой не согласны
x
Ну я хз почему в данном случае нельзя просто интерфейсом обойтись
кстати вот почему ещё: я могу для своего класса реализовать только select например, и всё будет работать, допустим bind мне не нужен (он же селектМэни) просто при написании from a from my class from b from myClass... компилятор мне не даст это сделать. С интерфейсами бы пришлось перенаследоваться или множественн наследоваться или писать пустые реализации с эксепшеном. а так всё работает, расширяешь по мере надобности.
Vladislav
Aleksandr
Select не надо реализовывать
Aleksandr
Linq использует метод расширения Select
Aleksandr
Его никак не переопределить
Ayrat
а, я понял. Ты думаешь что чиобы работал linq нужно отнаследовать ienumerable? это не так.
Мне кажется ты не понял. Линк это не особая фича, это просто экстеншн
Ayrat
То есть ты свой линк можешь написать изи
Ayrat
А вот заставить айДиспозабл интерфейс работать без айДиспозабл интерфейса тяжко
Ayrat
Называется дак тайпинг
Ayrat
Утиная типизация
Ayrat
Которая в сишарпе существует там где разрешат
Ayrat
Вот сейчас разрешили для реф страктов
x
Ну
Aleksandr
"Если что-то плавает как утка, летает как утка и крякает, значит это утка" (с)
Ayrat
Линк никак с утиной типизацией на связан
x
Линк тут при чем?
При том что он работает на любом типе у которого есть экстеншон метод Селкт.
Ayrat
Тащите галоперидол) извини
Ayrat
Я бросаю знамя объяснителя, кто хочет, поднимайте
Aleksandr
Ну, кстати
Aleksandr
Свечку не держал
Aleksandr
Но возможно это так и есть)
Ayrat
А где он не права то?
Ну например при чём тут линк и наличие явно объявленного метода расширения селект
Aleksandr
Кажется, linq как минимум делает исключение для queryable
Aleksandr
Да, а как осуществить выбор между ними?
Vladislav
Vladislav
Пример дайте. Я не понимаю происходящего
Aleksandr
Хороший вопрос
При трансляции из квери синтаксиса, я имею ввиду
サイトー
https://sharplab.io/#v2:CYLg1APgAgDABFAjAbgLACgNQMwIExwDCcA3hnBQrlACxwCyAFAJSnmUcBuAhgE5wBnAPYBXXgGMApnAC8cAHaSA7g24BPAEaSAPBqFCANgD5GAF14jJzNOgCQtnv16SBIg6dlwAZryEBbOAAPOABLeUFRCWkBSQNJcQ9GAEJA5gA6ABUhAGVzMIBzFht7Z1d3NIBJU0k/NIARET8AByL2CgBfDE7MdBxBSW444HxVTR0MowwyOzDq3nlBuD1DOAAJbgEqmtI4fMlTZDhu21nJecWMuC2Akl39w+6MWz76dS0WJ+n7UwALEIE0utNtUAnIvIMYsVHnYXm9JIxLiEQcxPk8Tl44IwkdsZHJ5G4DCi7N8fr4VIoVABBXj5RqSeSmAByBIAooEpE1TCEhPJGAs/JIhF4scjrBg0b9/oCNtdPOZLMVbJKAbK5Ni/FDxTDcK8xtoMgAlFxuUxGODZWLxUz6o1lU2MKAAVn1ABo4Ibje4zTE4gkhLwibYvujMcrpcCaoH7FAAOwKZSjLQ2z32n1W/1mP4q0WK2IxNHPOMUxPjW0mkxiuzddpAA
Aleksandr
При трансляции из квери синтаксиса, я имею ввиду
Просто с флюентом он будет работать ожидаемо
サイトー
вот пример как есть линк, но нет ienumerable
サイトー
можно, я просто отсюда пример взял http://blog.ploeh.dk/2018/03/26/the-maybe-functor/
Igor
Я только не понял, годится ли ext-method для нового disposable
サイトー
Я только не понял, годится ли ext-method для нового disposable
я пока кстати не встречал случаев когда он не годился (deconstruct например работает) интересно работает ли с getenumerator
x
А где он не права то?
йа тоже не понимаю, где я не права ! 😭
x
гнобят почом зря.
サイトー
иди лева
Ayrat
Я наконец понял о чём вы. вы о квери синтаксисе и утиной типизации для него @megasuperlexa извини пожалуйста!
Ayrat
ты прав, там тоже утиная типизация, да
Ayrat
Знамя - закопал
топор войны
Ayrat
я умею признавать неправоту
Ayrat
это очень просто
Ayrat
взял и признал
Hog
Нет ничего проще, чем бросить курить!
サイトー
Знамя - закопал
надпись написал
Hog
Я просто никогда «обычный» линк не использовал - мне флюент больше по душе
サイトー
та же херня хотя джойны по-моему там поприятнее
Hog
надпись написал
У идиспозабле был диспоуз
Aleksandr
А как же let'ы?
Hog
Анонимный класс и дальше :)