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