操作符重载问题...堆栈给冒..帮帮我..

zhiang75 2006-08-08 05:14:48
public static bool operator ==(KeyData a, KeyData b)
{
if (a == null && b.Data == null)
{
return true;
}
else if (a == null || b.Data == null)
{
return false;
}


if (a.Data == b.Data)
{
return true;
}
else
{
return false;
}

}

不用异常处理就没别的办法了吗?
...全文
242 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
foyuan 2006-08-08
  • 打赏
  • 举报
回复
对你的问题不是很明白 关于对象的引用 你可以 深度克隆 讲解比较清楚 呵呵
alien54155415 2006-08-08
  • 打赏
  • 举报
回复
if (Object.ReferenceEquals(a, null))
return Object.ReferenceEquals(b, null);
if (Object.ReferenceEquals(b, null))
return Object.ReferenceEquals(a, null);
return a.Data ==b.Data ;
xujiaoxiang 2006-08-08
  • 打赏
  • 举报
回复
a == null 时需要将a转换为object类型,否则会调用KeyData 重载后的==
xujiaoxiang 2006-08-08
  • 打赏
  • 举报
回复
if ( (object)a == (object)b ) return true;//对象为统一引用。

if( (object)a == null || (object)b == null ) return false;//一个对象为null

//....
xiaoniao2636 2006-08-08
  • 打赏
  • 举报
回复
不是特明白,等待答案,顶起来!
Knight94 2006-08-08
  • 打赏
  • 举报
回复
对于引用类型,正确的方法应该是如下:
public class KeyData
{
public override bool Equals( object right )
{
//Check null
if( right == null )
return false;

//check reference equality
if( object.ReferenceEquals( this, right ) )
return true;

KeyData rightASKeyData = right as KeyData;
if( rightASKeyData == null )
return false;
else
return this.Data == rightASKeyData.Data;
}
}
zhiang75 2006-08-08
  • 打赏
  • 举报
回复
就是重载完了==..一调用堆栈给冒了..原因就是 a == null ,它是循环引用..
zhiang75 2006-08-08
  • 打赏
  • 举报
回复
KeyData 是个CLASS.
zhiang75 2006-08-08
  • 打赏
  • 举报
回复
public static bool operator ==(KeyData a, KeyData b)
{
if (a == null && b == null)
{
return true;
}
else if (a == null || b == null)
{
return false;
}


if (a.Data == b.Data)
{
return true;
}
else
{
return false;
}

}
失误..已经改过....
lovvver 2006-08-08
  • 打赏
  • 举报
回复
堆栈给冒?
不明白你的问题。
Knight94 2006-08-08
  • 打赏
  • 举报
回复
你所给出的标题与所问的没有直接的关系。
Knight94 2006-08-08
  • 打赏
  • 举报
回复
首先如果KeyData类型是引用类型的话,最好不要重载“==”运算符,而在KeyData提供Equal方法是比较正确的方法。

其次,就你所给出的这段代码是有问题的;也就说前两个if做的判断都不对。
cancerser 2006-08-08
  • 打赏
  • 举报
回复
说实话 没看明白,帮顶
三省Ta叔 2006-08-08
  • 打赏
  • 举报
回复
唉,知识甚浅,只能帮你顶了!
加油,
我自己加油,哈哈!
zifeng_86188281 2006-08-08
  • 打赏
  • 举报
回复
老肥 虽然我不知道
帮你顶

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧