Search
Write a publication
Pull to refresh
0
0
Send message

Вот уж не знал что могу позволить себе купить жителя Германии.

Еще никогда у меня не было выбора между двумя вариантами кода, вариантов всегда очень много. Пока есть дженерики + экстеншны или наследование первые 2 варианта примера никогда не придется писать.


Оба варианта ниже функционально эквивалентны.
В общем случае нет.

Например ToList() который сейчас экстеншн метод к IEnumerable<>. Сейчас если я делаю свой класс, имплементящий IEnumerable, то метод ToList() пройдет по моему IEnumerable<> и если элементов много, то создаст в процессе много массивов, копируя их туда-сюда в процессе.
Если в моей реализации заранее известно количество элементов, то я мог бы в принципе сделать оптимальнее, только это очень убого будет. Нужно будет экстеншн MyToList() делать, который проверит тип IEnumerable<>, является ли он моей реализацией, вызовет оптимальную реализацию если да, или стандартную если нет.


Ботомлайн — эту фичу уже можно делать костыльно с помощью экстеншн методов. Те кому не нравится фича, должны ненавидеть и экстеншн методы, потому что они те же самые методы на интерфейсах, только хуже.

Information

Rating
Does not participate
Registered
Activity