仅声明 == 是错误的,还要声明 != 。
如果要重载一个运算符,就必须同时重载一组相关的运算符。因为运算符之间存在一些预定义的关系,需要同时进行重载以保持一致性。
cs
public class MyClass
{
public int Value { get; set; }
public static bool operator == (MyClass obj1, MyClass obj2)
{
if (ReferenceEquals(obj1, obj2))
return true;
if (obj1 is null || obj2 is null)
return false;
return obj1.Value == obj2.Value;
}
public static bool operator !=(MyClass obj1, MyClass obj2)
{
return !(obj1 == obj2);
}
}
在上面的示例中,重载了和运算符来比较两个对象的值是否相等。在重载运算符时直接使用了运算符的逻辑来实现。