В С# любой пользовательский struct автоматически является подклассом System.Struct System.ValueType и System.Struct System.ValueType является подклассом System.Object.
Но когда мы назначаем некоторую ссылку на объект-тип, он получает коробку. Например:
struct A
{
public int i;
}
A a;
object obj = a; // boxing takes place here
Итак, мой вопрос: если A является потомком System.Object, не может ли компилятор применить его к типу объекта вместо бокса?