long and int equality, what goes on with Equals()
本问题已经有最佳答案,请猛点这里访问。
我今天遇到这个,我相信有一个很好的理由,但为什么num2等于num1的情况是否不一致?
1 2 3 4 5 6 | long num1 = 1; int num2 = 1; num1.Equals(num2); // TRUE - cool. num2.Equals(num1); // FALSE - hmm? num2 == num1; // TRUE - ?! Whit? |
为什么会这样呢?
1 | num1.Equals(num2); |
解决了
1 | num2.Equals(num1); |
调用
1 | num2 == num1; |
为
1 2 3 4 5 6 | long num1 = 1; int num2 = 1; MessageBox.Show(num1.Equals(num2).ToString()); MessageBox.Show(num2.Equals((int)num1).ToString()); MessageBox.Show((num2 == num1).ToString()); |
这是一个显式地将long-a s转换为int以使它们如预期一样相等的问题。其他人正在为你做演员。