與盒裝值型別進行比較

如果將值型別分配給 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