Задать вопрос

С# стоимость приведения типа?

Заинтересовал вопрос что происходит внутри CLR во время такой операции?
Какая стоимость таких операций?
Интересуют только ссылочные типы(boxing/unboxing не рассматриваем). В рихтере ответа не нашел что странно.

object o = new MyType();
var entity = (MyType)o;
  • Вопрос задан
  • 601 просмотр
Подписаться 5 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Говорят, стоимость высокая.
https://switch-case.ru/73228064
Ответ написан
@kttotto
пофиг на чем писать
Для ссылочных типов, в рантайме, это почти ничего не стоит. Основная проверка привидения происходит на стадии компиляции.
По сути при таком приведении нет необходимости создавать новый объект, перемещать его в памяти. Просто ссылка entity, теперь будет указывать на объект MyType, но доступ к интерфейсу будет другой.
В рантайме можно упасть с ошибкой привидения, если Вы в object положили MyType1, а привести пытаетесь к MyType2, интерфейсы совпадать не будут и ясно, что вызывать будет нечего.

PS: Посмотрел поиском, это все написано в MSDN
Операция приведения между ссылочными типами не меняет тип времени выполнения базового объекта; изменяется только тип значения, который используется в качестве ссылки на этот объект.
Ответ написан
@John_Nash
coder
object o = new MyType();
var entity = (MyType)o;

это не приводит к изменению объекта, значит, ресурсы не тратятся

может это даст ответ на вопрос
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы