关于C#Equals的疑惑

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:43:14
class baseType
{
int i;
}
class MyRefType:baseType
{
public override Boolean Equals(object obj)
{
if(obj==null) return fals;
if(this.GetType()!=obj.GetType()) return fals;
MyRefType other=(MyRefType) obj;
...........//判断i是否相等;是则返回true;
........
}
}

MyRefType a=new MyRefType();
baseType b=new MyRefType();
假设a和 b的i相等,
b.Equals(a)的值不就是true了吗?可是他们是不同类型啊,a是MyRefType类型,b是baseType类型??????????????????????

我昨天看了看MSDN。
这个Equals函数的作用是,看看你声明的两个类的实例,是不是占用的是同一个内存。
楼主在自己的类中重写了它。不知道你注释掉了,return base.Equals(obj);这句话没有。
依我的理解,无论你注没注掉,
MyRefType a=new MyRefType();
baseType b=new MyRefType();
b.Equals(a)//这个语句是返回的FALSE!
楼主,楼主,把你那个函数的代码,帖全了。哪有i啊?