C#如何判断2个类相等

如题所述

这个问题问的很纠结...
相等是什么意义的相等? 值相等还是同一引用?
如果是后者 直接用==判断即可 但是对于字符串要用object.ReferenceEquals判断(注意字符串也是类...)

如果是前者 需要你自己写函数判断了 比如你要判断两个数组的所有值都相等 这可真没有现成的方法...(数组也是类...)

如果是自己写的类 那么最好的方法是重写== != 运算符和Equals GetHashCode 方法 用自己的逻辑来判断是否相等 这样能达到语法最大程度的简洁 以及符合.net开发规范
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-03
。。。2个类,值类型?引用类型??
值类型直接比较,
引用类型,不好判断(方法、成员、属性、事件),。。。。
第2个回答  2013-04-03
楼主问的是对象吧,对象的值是否相同吧,直接比较即可。

四种C#对象的比较方式
在C#中比较两个对象是否相等,有四种主要方式。以下是这四种比较方法的详细解析。1、使用ReferenceEquals(object o1, object o2)方法 ReferenceEquals方法用于比较两个对象的引用是否相同。如果两个对象是同一个引用,则返回true;否则返回false。2、使用Equals(object o)方法 Equals方法比较的是对象的内容。如...

c# 比较两个对象的值是否相等
因为页面加载时你textbox1里的值又被初始化为0了,所有if里的语句永远不会执行,改一下代码结构

c#中比较两个Object类型是否相等的语句是?
public bool Equals(object a, object b){ if (a.Equals(b)){ return true;} return false;} 看到没?用object 对象自带的Equals函数.要简洁可以写成 return a.Equals(b);

C# 比较对象的相等性
在比较引用类型相等性时,C#提供了多种方法,包括静态的`ReferenceEquals()`方法、`Equals()`虚方法、`Equals()`静态方法以及比较运算符`==`。其中,`ReferenceEquals()`用于直接比较两个引用是否指向同一内存地址,对于null对象的比较也返回true。`Equals()`虚方法允许在自定义类中重写以实现值比较,但...

C#中什么时候需要通过哈希码来判断两个对象是否相等?
按照规范,在你定义类的时候,如果Equals函数相等,那么哈希码一定相等,反之则不作要求。也就是说,相等的对象必须有相等的哈希码,有相等哈希码的对象却未必相等。.Net中的Hashtable,Dictionary等自带类会自动调用类的Hashcode函数来选择对象存放的位置,而如果是自己写程序的话,基本上只会用到Equals函数...

C#查询数据库两个数据相同怎么判断?
Select Min([ID]) as ID,Sum([数量]) as 数量 From [表名] Group By [书名],[号码]这样得到的 ID 是结果 ID 中最小的那个,然后数量是结果的总和。让然,这个只是给你结果,并没有帮你实际累加到数据库中,也没有删除多余的数据。更新这部分就不用说了,直接 Update 条件为 ID 等于上面...

如何用c#语言判断两个整数是否相等?
其中 a大于等于3用表达式 a>=3 表示。>=为C中的大于等于符号,注意不能使用≥。a小于等于6用表达式 a<=6 表示。<=为C中的小于等于符号,注意同样不能使用≤。要做到同时满足,需要使用逻辑与运算符&&,该运算符表示两边的表达式均为真时,整体才为真。于是最终的表达式为 a>=3 && a<=6 ...

如何判断c#中的两个double类型变量是否相等
int dequals(double a, double b){return Math.Abs(a-b) < 0.000001;}

c#equals 和==的区别
C#中的相等有两种类型:引用相等(ReferenceEquals)和值相等(Equals)。值相等就是说两个对象包含相同的值。而引用相等则比较的是两个对象的引用是否是同一个对象。也就是说,如果ReferenceEquals为True,则Equals必然为True,反过来就不一定了。这样的话可以看出来,ReferenceEquals我们没有比较去管他什么,系统...

C#初学者对Equals方法的几个常见误解
众所周知,Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等。Object的Equals的默认实现比较的是两个对象的引用等同性。而Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性。也就是说,在C#里,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑...

相似回答