gpt4 book ai didi

c# - 如果(<对象> == <整数>)

转载 作者:太空狗 更新时间:2023-10-30 00:23:23 26 4
gpt4 key购买 nike

我无法理解,为什么下图中的if语句返回false。我希望你能给我解释一下。

你可以看到,两个变量的值和类型是相同的。

enter image description here

最佳答案

您正在调用的 == 运算符是采用两个 object 参数的重载。这使用引用相等 - 值并不重要,它必须是相同对象。

正如您在 the documentation 中所读到的那样:

For reference types other than string, == returns true if its two operands refer to the same object. For the string type, == compares the values of the strings.

虽然 int 是值类型,但它一直是 'boxed' (包装在 object 中)。您正在比较包装整数的两种不同引用类型。

要解决此问题,您可以改用 object.Equals - 这将比较两个整数。

item.Equals(value);

或者静态方法(它将处理 item == null 的情况):

object.Equals(item, value);

如果您将 int 拆箱,那么您可以按预期使用 ==int 重载:

(int)item == (int)value;

同样,根据文档:

For predefined value types, the equality operator (==) returns true if the values of its operands are equal.

关于c# - 如果(<对象> == <整数>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39816503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com