La boxe se produit uniquement avec les types de valeur. B
est un type de référence, donc non, il n'y a pas de boxe.
Si B
était un type de valeur (struct
au lieu de class
), alors oui, la boxe se produirait.
interface IA { }
struct B : IA { }
B b = new B();
IA a = b; //boxing, converting a value type into a reference type
b = (B)a; //unboxing, converting a boxed value type back to the value type itself
Une façon d'éviter ces opérations de boxe et unboxing lorsqu'ils traitent avec struct et interfaces définit une interface générique, à la IEquatable<T>
, IComparable<T>
, etc., ce qui vous permet de travail avec l'interface sans réellement la boxe le type de valeur lui-même.