如何使用asp.net mvc比较两个对象
本文关键字:两个 对象 比较 何使用 asp net mvc | 更新日期: 2023-09-27 18:09:44
这是两个相同的对象,但我的条件是进入else块。如何比较两个对象值相同或不?
baObject b = new baObject();
baObject b1 = new baObject();
if (object.Equals(b, b1))
{
// Equal
}
else
{
// not equal
}
这种行为如何?
var t1 = repo.Model_Test_ViewAllBenefitCodes(2)
.OrderBy(p => p.ba_Object_id)
.ToArray();//.FirstOrDefault();
var t2 = x.ViewAllBenefitCodes
.OrderBy(p => p.ba_Object_id)
.ToArray();//.FirstOrDefault();
这里t1和t2是相同的对象,但从两个不同的方法或函数获得
默认情况下,这里处理的是引用相等。通过引用相等,它会检查你是否有相同的对象,这意味着b和b1在内存中是相同的对象,而不仅仅是相等的,不管这对baObject来说意味着什么。
请参阅此MSDN参考
你可以看到在MSDN引用的底部你可以定义你自己的operator==的实现这样你就可以做这样的事情:
if (a1 == a2)
,其中a1和a2是您创建的某种类型的对象。使它们相等的是由你决定的——例如,如果它们具有可以比较的某些属性。
回到引用相等-如果你做了这样的事情:
baObject b = new baObject();
baObject b1 = b;
if (object.Equals(b, b1))
的值为真,因为b和b1实际上是同一个对象。但由于这可能不是您所追求的,因此您可以为baObject类定义operator==,然后比较它们是否相等。你可以这样做:
public static bool operator ==(baObject b1, baObject b2) {
return b1.foo == b2.foo && b1.bar == b2.bar;
}
定义等效对baObject的意义
您可以重写Equals()或==以任何您喜欢的方式比较对象(即具有相同的ID属性)。
这样可以控制两个对象何时应该被认为是相等的。
我怀疑它们是相同的对象。否则Object.equals()将返回true。
Equals的默认实现支持引用类型,以及值类型的按位相等。参考相等意味着被比较的对象引用引用相同的对象。按位相等意味着被比较的对象具有相同的二进制表示。
注意,派生类型可能会覆盖要实现的Equals方法平等的价值。值相等意味着比较对象具有相同的值,即使它们有不同的二进制表示。为例如,考虑两个表示数字1.10的Decimal对象和1.1000。Decimal对象不具有位相等性,因为它们有不同的二进制表示来解释不同数量的尾零。然而,对象是有价值的相等是因为数字1.10和1.1000被认为是相等的用于比较,因为后面的零是不重要的。
要实现您向我们解释的内容,您最好使用重写Equals方法,也要使用==和!=操作符,我们需要重载它们。