C语言与装箱值类型的比较

示例

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

object left = (int)1;  // int在对象框中
object right = (int)1; // int在对象框中

var comparison1 = left == right;      // 假

可以通过使用重载Equals方法避免这种情况,该方法将提供预期的结果。

var comparison2 = left.Equals(right); // 真正

另外,也可以通过取消对left和right变量的装箱操作int来比较值:

var comparison3 = (int)left == (int)right; // 真正