与盒装值类型进行比较
如果将值类型分配给 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
或者,也可以通过拆箱 left
和 right
变量来完成同样的操作,以便比较 int
值:
var comparison3 = (int)left == (int)right; // true