Все ли приведения C # приводят к упаковке / распаковке
Мне любопытно узнать, приводят ли все приведения в C # к боксу, и если нет, все ли приведения являются дорогостоящей операцией?
Пример взят изБокс и распаковка (Руководство по программированию в C #)
int i = 123;
// The following line boxes i.
object o = i;
Эта строка, очевидно, вызывает бокс (оборачивая тип int как объект). Это операция, которая считается дорогостоящей, поскольку она создает мусор, который будет собираться.
А как насчет приведений из 2 различных типов ссылочных типов? какова стоимость этого? это можно правильно измерить? (по сравнению с предыдущим примером)
Например:
public class A
{
}
public class B : A
{
}
var obj = new B();
var obj2 = (A)obj; // is this an "expensive" operation? this is not boxing