[英]C# int equality operator unexpectedly false
當調試器顯示:
object {int}
這意味着它是一個裝箱的 int 。 盒裝值類型是object
(具體來說,是System.ValueType ),它是一種引用類型。 每個裝箱都會產生一個新的 object 實例,這意味着它們將不具有引用相等性,即使它們裝箱了相同的值。 ==
運算符,對於引用類型,測試引用相等性,因此在這種情況下它將返回 false。
如果您想要值相等而不是引用相等,請使用Equals
。
public class Program
{
public static void Main()
{
object a = 1;
object b = 1;
Console.WriteLine(a == b);
Console.WriteLine(a.Equals(b));
}
}
Output:
False
True
https://do.netfiddle.net/eSuFVL
另一種解決方案是將您的int
值存儲在實際的int
變量而不是對象中,例如使用generics 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.