gpt4 book ai didi

.NET:装箱时 double.Equals() 的奇怪行为

转载 作者:行者123 更新时间:2023-12-04 17:28:21 25 4
gpt4 key购买 nike

这里发生了什么?

int zero = 0;
double x = 0;
object y = x;

Console.WriteLine(x.Equals(zero)); // True
Console.WriteLine(y.Equals(zero)); // False

最佳答案

在这里,您正在调用两种不同的方法 - Double.Equals(double)Object.Equals(object) .第一个电话,int可隐式转换为 double ,因此该方法的输入是 double并在两个 double 之间进行相等性检查s。但是,对于第二次调用,int没有被强制转换为 double ,它只是被装箱。如果您查看 Double.Equals(object)反射器中的方法,第一行是:

if (!(obj is double))
{
return false;
}

所以它返回false,因为输入是一个装箱 int ,不是盒装 double .

接得好!

关于.NET:装箱时 double.Equals() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780022/

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