我已经过了question次了

我明白,要落实==!=Equals().

public class BOX
{
    double height, length, breadth;

    // this is first one '=='
    public static bool operator== (BOX obj1, BOX obj2)
    {
        return (obj1.length == obj2.length 
                    && obj1.breadth == obj2.breadth 
                    && obj1.height == obj2.height);
    }

    // this is second one '!='
    public static bool operator!= (BOX obj1, BOX obj2)
    {
        return !(obj1.length == obj2.length 
                    && obj1.breadth == obj2.breadth 
                    && obj1.height == obj2.height);
    }

    // this is third one 'Equals'
    public override bool Equals(BOX obj)
    {
        return (length == obj.length 
                    && breadth == obj.breadth 
                    && height == obj.height);
    }
}

我想,我已经正确地编写了覆盖==!=Equals个运算符的代码.不过,我得到的编译错误如下.

'myNameSpace.BOX.Equals(myNameSpace.BOX)' is marked as an override 
but no suitable method found to override.

所以,问题是——如何覆盖上述运营商&摆脱这个错误?

推荐答案

我想你是这样宣布Equals方法的:

public override bool Equals(BOX obj)

因为object.Equals方法接受一个对象,所以没有方法可以用这个签名覆盖.你必须像这样覆盖它:

public override bool Equals(object obj)

如果您想要类型安全的Equals,,可以实现IEquatable<BOX>.

.net相关问答推荐

EF核心类似功能T-SQL UPDATE FROM

ZstdNet库的问题:Src大小不正确,异常

如何使用AWS Lambda函数制作网络挂钩?

C#字符串的GetHashCode()是如何实现的?

如何创建 LINQ to SQL 事务?

编译时禁用 Dll 文化文件夹

使用返回随机结果的函数进行单元测试

找不到 Microsoft.Office.Interop Visual Studio

简单委托(委托)与多播委托

如何在不丢失数据的情况下重命名 Entity Framework 5 Code First 迁移中的数据库列?

C# 编译为 32/64 位,或任何 cpu?

有没有办法只在 C# 中设置一次属性

如何将枚举值序列化为 int?

在 C# 中将匿名类型转换为键/值数组?

VB.NET 与 C# 整数除法

如何禁用 Alt + F4 关闭表单?

如何从 .NET 读取 PEM RSA 私钥

CI服务器的比较?

具有不同身份验证标头的 HttpClient 单个实例

多个列表与 IEnumerable.Intersect() 的交集