仅声明 == 是错误的,还要声明 != 。
如果要重载一个运算符,就必须同时重载一组相关的运算符。因为运算符之间存在一些预定义的关系,需要同时进行重载以保持一致性。
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);}
}
在上面的示例中,重载了和运算符来比较两个对象的值是否相等。在重载运算符时直接使用了运算符的逻辑来实现。