Bool Equals方法在比较具有相同内容的队列时总是返回false

本文关键字:队列 false 返回 方法 Equals 比较 Bool | 更新日期: 2023-09-27 18:08:02

我试图找出如何创建一个Equals方法来比较两个队列的内容。下面是我的代码:

public OurQueue(int capacity = 10)
    {
        myArray = new T[capacity];
    }
private void Increment(ref int value)
    {
        if (++value == myArray.Length)
            value = 0;
    }

public bool Equals(T item) 
    {         
        OurQueue<T> Q1 = new OurQueue<T>();
        OurQueue<T> Q2 = new OurQueue<T>();
        bool itemEqual = false;
        if (IsEmpty() == true)
            throw new ApplicationException("Can't compare empty queues");
        while (Q1.Count() != 0 && Q2.Count() != 0) 
         {
                if (Q1.myArray[mFront].Equals(Q2.myArray[mFront])) 
                {
                    itemEqual = true;
                    Q1.Increment(ref mFront);
                    Q2.Increment(ref mFront);
                }
                else
                    return itemEqual = false;    
        }
        return itemEqual;
    }

有什么想法在哪里我错了?

Bool Equals方法在比较具有相同内容的队列时总是返回false

首先,您应该更新方法参数,以便它实际接受2个队列对象。

第二步,检查它们的计数是否不同,如果不同则返回false。我假设如果你比较两个空队列,你会有一个异常情况(或返回true-这取决于你)。

第三,基于接收到的作为输入的队列创建2个新队列。在主while循环中,由于您知道两个队列的大小必须相同,因此可以Pop()并比较来自新队列的每个值。如果有不相等的,只返回return false;,而不是返回保存的bool值