您的位置:首页 > 编程语言 > C#

C#等于操作符注意事项

2014-11-12 12:25 274 查看
public class MyClass
{
public int ID;

/*public static bool operator ==(MyClass c1, MyClass c2)
{
//下面这段代码中的“==”调用会进入递归,直至崩溃
if (c1 == null || c2 == null)
{
return c1 == c2;
}

return c1.ID == c2.ID;
}

public static bool operator !=(MyClass c1, MyClass c2)
{
//下面这段代码中的“==”调用会进入递归,直至崩溃
if (c1 == null || c2 == null)
{
return c1 != c2;
}

return c1.ID != c2.ID;
}*/

//正确的方法
public static bool operator ==(MyClass c1, MyClass c2)
{
//将c1对象转为object再进行判断
//这里的object.Equals(c1, null)也可以写成
//c1 as object == null
if (object.Equals(c1, null) || object.Equals(c2, null))
{
return object.Equals(c1, c2);
}

return c1.ID == c2.ID;
}

public static bool operator !=(MyClass c1, MyClass c2)
{
if (object.Equals(c1, null) || object.Equals(c2, null))
{
return !object.Equals(c1, c2);
}

return c1.ID != c2.ID;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: