Re[12]: Breaking change
От: Doc Россия http://andrey.moveax.ru
Дата: 13.12.22 14:38
Оценка: -1
Здравствуйте, karbofos42, Вы писали:

K>Применимы. Уровень абстракции достаточно условный и абстрактный класс в общем случае не обязан чем-то отличаться от интерфейсов.


Тот факт что у абстрактного класса может быть состояние уже меняет все. Как раз свести абстрактный класс к интерфейсу это не общий а частный случай.

K>Есть Stream и унаследованные от него MemoryStream, FileStream и какой-нибудь NetworkStream.

K>Много вот Stream знает про реализацию всего этого добра?

Не должен знать.

K>Метод расширения не является аналогом фичи по той причине, что он для всех реализаций интерфейса/наследников класса будет одинаковый,

K>а человекам нужно поведение по умолчанию с возможность перегрузки для конкретных реализаций.

Это от дизайна зависит можно использовать расширение или нет.

K>Было бы множественное наследование — думаю, что и фичу бы не добавляли, т.к. было бы доступно это всё через классы сделать.


Да не про множественное наследование эта фича.
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods#motivation
Это про добавление методов без ломки совместимости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.