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;
}
有什么想法在哪里我错了?
首先,您应该更新方法参数,以便它实际接受2个队列对象。
第二步,检查它们的计数是否不同,如果不同则返回false。我假设如果你比较两个空队列,你会有一个异常情况(或返回true-这取决于你)。
第三,基于接收到的作为输入的队列创建2个新队列。在主while循环中,由于您知道两个队列的大小必须相同,因此可以Pop()并比较来自新队列的每个值。如果有不相等的,只返回return false;
,而不是返回保存的bool值