我已经过了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相关问答推荐

删除数据库项目中的表

在计算Total毫秒时,.NET TimeSpan类中是否存在错误?

dotnet 8 web api在部署到docker后无法工作

从容器化客户端应用程序连接到 OPC-UA 服务器

.NET 中两个子字符串之间的非贪婪正则表达式匹配

部署时如何控制红隼端口?

F#:跨度、提升和底部类型(或缺乏)

无法使用 int.Parse 从字符串转换值

正则表达式在空格上拆分,除非在引号中

为什么循环引用被认为是有害的?

有什么方法可以在不重新编译的情况下覆盖 .NET Windows 服务名称?

.net 服务总线建议?

什么是 SUT,它来自哪里?

隐式与显式接口实现

.NET 如何判断路径是否是文件而不是目录?

单元测试 C# 保护方法

微软内部 PriorityQueue 中的错误?

Microsoft.Bcl.Build NuGet 包有什么作用?

如何从 webclient 获取状态码?

什么时候使用 Tuple 和 KeyValuePair 比较好?