Здравствуйте, Sinix, Вы писали:
EP>>Тут речь не про перегрузки и кодогенерацию, а про то что там разное поведение для reference/value type.
S>А это где такое чудо, напомни?
ВотАвтор: Evgeny.Panasyuk
Дата: 23.03.16
— там два момента.
EP>>Тем не менее — как раз наглядный пример что это всё это таки стоит свеч, String ведь не единственный класс подобного рода.
S>ну да. Но тут есть маааленький нюанс: для того, чтоб эта оптимизация имела смысл, пришлось протащить знание о кишках string по всему CLR, от JIT и до профайлера.
S>Ну и для каких других типов такое будет иметь смысл?
Не прям такое, а уменьшение ветвления по памяти в общем.
То есть например есть класс, он агрегирует другие объекты других классов, те в свою очередь аггрегируют далее. Получается дерево. В большинстве случаев размазывать все под-объекты по памяти не требуется, и достаточно "плоского" "inline"-хранения. На C# структуры имеют ряд ограничений, и по факту многие под-объекты будут классами, даже те которые по смыслу могли быть "inline".