为什么我的bool RemoveAll方法只返回false
本文关键字:返回 false 方法 RemoveAll 我的 bool 为什么 | 更新日期: 2023-09-27 18:07:32
我必须为堆栈创建RemoveAll方法,该方法取出所有特定值,然后将其他值返回到原始堆栈。但是,我编写的方法只返回false。我的代码中的错误是什么?
这是我写的方法:
public bool RemoveAll(T item)
{
Stack<T> OurStack = new Stack<T>();
Stack<T> tempStack = new Stack<T>();
bool itemRemove = false;
OurListNode<T> pTmp = mTop;
while (OurStack.Count > 0)
{
if (pTmp.Data.Equals(item))
{
itemRemove = true;
pTmp = pTmp.Next;
}
else
{
tempStack.Push(pTmp.Data);
}
}
while (tempStack.Count > 0)
{
pTmp = pTmp.Next;
OurStack.Push(pTmp.Data);
}
return itemRemove;
}
下面是我用来测试这个方法的代码:
static void Main()
{
OurStack<int> nums = new OurStack<int>();
nums.Push(1);
nums.Push(31);
nums.Push(22);
nums.Push(3);
//nums.RemoveAll(31);
Console.Write(nums.RemoveAll(1));
Console.ReadKey();
问题是:
(OurStack。计数> 0)
和
(tempStack。计数> 0)
将始终为false,因为当函数开始时,您将用新对象初始化OurStack和tempStack,因此它将始终为空(除非您在堆栈构造函数代码中添加了某些内容):
Stack<T> OurStack = new Stack<T>();
Stack<T> tempStack = new Stack<T>();
所以这些列表总是空的。
可能行- if (pTmp.Data.Equals(item))永远不会返回true,因此永远不会切换bool值。
OurStack是变量名还是类型名?在RemoveAll方法中,它被用作变量名,在test方法中,它被用作类型。