与盒装值类型进行比较

如果将值类型分配给 object 类型的变量,则将它们装箱 - 该值存储在 System.Object 的实例中。在将值与 == 进行比较时,这可能会导致意外后果,例如:

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

var comparison1 = left == right;      // false

这可以通过使用重载的 Equals 方法来避免,该方法将给出预期的结果。

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

或者,也可以通过拆箱 leftright 变量来完成同样的操作,以便比较 int 值:

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