');

C# Language Confronti con i tipi di valore in scatola

Esempio

Se i tipi di valore sono assegnati a variabili di tipo object , vengono inseriti in una scatola : il valore viene archiviato in un'istanza di System.Object . Questo può portare a conseguenze indesiderate quando si confrontano i valori con == , ad esempio:

object left = (int)1;  // int in an object box
object right = (int)1; // int in an object box

var comparison1 = left == right;      // false

Questo può essere evitato usando il metodo Equals sovraccarico, che darà il risultato atteso.

var comparison2 = left.Equals(right); // true

In alternativa, lo stesso potrebbe essere fatto unboxing delle variabili left e right modo che i valori int vengano confrontati:

var comparison3 = (int)left == (int)right; // true