Re[60]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: vdimas Россия  
Дата: 09.09.21 11:23
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Отсутствие наследования означает, что код можно делать очень эффективным — например, везде, где мы используем структуру хоть бы и по ссылке, нам известен точный тип.


Запретить виртуальные методы для структур?
А при боксировании поданной по ссылке структуры боксировать только поданную "часть" структуры.


S>Частным случаем является многократно упомянутый в этой же дискуссии трюк с параметризацией генерика структурным типом, ограниченным интерфейсом.


Там все-равно уникальный код под структуру генерится джитом.

Кстате, и тут АОТ может помочь, бо если две структуры имеют одинаковый лейаут и функциональность, то и сгенерённый код под них мог бы бы одинаковый.
Например, как все инстансы Pointer<T>.


S>Таким образом, имеем полиморфизм без штрафов к производительности.


До боксирования там, считай, compile-time полиморфизм.


S>>Хотя всегда можно сделать структуру с полем наследуемой структуры и нагенерить свойства и методы над наследуемой структурой с помощью того же source generator

S>Так сделать можно, но нельзя будет передать ref Descendant в параметр, где ожидается ref Parent.

Именно.
Хотя, при передаче по-значению можно выкрутиться через implicit-оператор приведения типа.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.