我有以下代码片段但输出错误.
class Program
{
static void Main(string[] args)
{
var i = 10000;
var j = 10000;
Console.WriteLine((object) i == (object) j);
}
}
Run Code Online (Sandbox Code Playgroud)
我期待的是真的,但我变得虚伪
mar*_*ind 21
您正在装箱数(通过对象强制转换)为每个变量创建一个新实例.==对象的运算符基于对象标识(也称为引用相等),因此您看到false(因为实例不相同)
要正确比较这些对象,您可以使用Object.Equals(i, j)或i.Equals(j).这将起作用,因为对象的实际运行时实例将是Int32其Equals()方法具有正确的整数相等语义.
您正在使用==默认调用ReferenceEquals.你应该使用:
Console.WriteLine(((object)i).Equals((object)j));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |