C#面:利用 operator 声明且仅声明了 == ,有什么错误吗?

仅声明 == 是错误的,还要声明 != 。

如果要重载一个运算符,就必须同时重载一组相关的运算符。因为运算符之间存在一些预定义的关系,需要同时进行重载以保持一致性。

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);
    }
}

在上面的示例中,重载了和运算符来比较两个对象的值是否相等。在重载运算符时直接使用了运算符的逻辑来实现。

相关推荐
星辰烈龙16 小时前
黑马程序员Java基础9
java·开发语言
@游子16 小时前
Python类属性与魔术方法全解析
开发语言·python
炼钢厂16 小时前
C#6——DateTime
c#
眠りたいです17 小时前
现代C++:C++11并发支持库
开发语言·c++·多线程·c++11·c++并发支持库
小灰灰搞电子17 小时前
Rust可以取代C++么?
开发语言·c++·rust
cat三三17 小时前
java之异常
java·开发语言
奇树谦17 小时前
【Qt实战】实现图片缩放、平移与像素级查看功能
开发语言·qt
Lv117700817 小时前
Visual Studio中的多态
ide·笔记·c#·visual studio
我命由我1234517 小时前
Python Flask 开发问题:ImportError: cannot import name ‘Markup‘ from ‘flask‘
开发语言·后端·python·学习·flask·学习方法·python3.11
wjs202417 小时前
Go 语言指针
开发语言