关于C#Equals

来源:百度知道 编辑:UC知道 时间:2024/06/22 06:35:32
class MyRefType:baseType
{
public override Boolean Equals(pbject obj)
{
if(obj==null) return fals;
if(this.GetType()!=obj.GetType()) return fals;
MyRefType other=(MyRefType) obj;
...........
........
}
}

上面的程序中if(this.GetType()!=obj.GetType()) return fals;是判断两个对象的类型是否不同,如果不同则他们不可能相等,那么返回false; 如果相同,则执行MyRefType other=(MyRefType) obj; ;把obj转型为 MyRefType类型,但是执行MyRefType other=(MyRefType) obj之前不是已经判断两个对象的类型相同了吗,既然类型已经相同了,那怎么还需要转型呢???想来想去都想不通啊。。。。

这是语法规定:父类赋给子类,必须做强制转换(如果能转换)

不是啊..public override Boolean Equals(pbject obj)
你这句是重写了Equals,如果想的不错,你那个传递的应该是object obj 而不是pbject obj(除非你写了个pbject类)
传递过来的是object基类 所以需要转换啊...

一个好像时真是的值另一个时内存的地址