当前位置:  开发笔记 > 编程语言 > 正文

比较C#对象

如何解决《比较C#对象》经验,为你挑选了1个好方法。

考虑以下代码:

object str1 = "shahrooz";
object str2 = "shahrooz";
object int1 = 1;
object int2 = 1;

Console.WriteLine("str1 == str2 : " + (str1 == str2));
Console.WriteLine("int1 == int2 : " + (int1 == int2));
Console.ReadLine();

运行此代码时,您将获得以下结果:

str1 == str2 : True
int1 == int2 : False

两个比较都是对象,但为什么第一个比较返回true但第二个比较返回false?



1> Wormbo..:

==运算符执行参考相等性检查,如果这两个操作数的类型的object或没有更具体相等运算可以基于被确定编译时类型的操作数.

在您的情况下,编译时操作数类型是object,因此检查引用相等性.在您分配1给任一变量时,运行时将值"装箱"到对象中.因此,您将获得包含整数值1的两个对象,但它们是两个单独的对象,因此返回引用相等性false.

要执行值相等性比较,请使用该Equals()方法.它可以在子类中重写以执行特定于类型的值比较,我相信这是您想要做的.表达式int1.Equals(int2)应该返回你想要的.由于这两个变量是空的,你可能需要将其写为int1 != null ? int1.Equals(int2) : int2 == null防止在投掷的NullReferenceException int1null.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有