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

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

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

object o = new MyType();
var entity = (MyType)o;
  • Вопрос задан
  • 625 просмотров
Подписаться 5 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 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;

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

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

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

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