與盒裝值型別進行比較
如果將值型別分配給 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