Мне любопытно узнать, все ли приведения в С# приводят к боксу, а если нет, все ли это дорогостоящая операция?
Пример из Бокс и Unboxing (Руководство по программированию на С#)
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