如何在C#中创建RemoveAll方法?
它应该从堆栈中删除所有出现的值。 这是我的代码,但是我的while语句有问题 在某些测试用例中,它突出显示while语句并向我抛出一个未处理的异常“System.NullReferenceException”如何在C#中创建RemoveAll方法?,c#,nullreferenceexception,C#,Nullreferenceexception,它应该从堆栈中删除所有出现的值。 这是我的代码,但是我的while语句有问题 在某些测试用例中,它突出显示while语句并向我抛出一个未处理的异常“System.NullReferenceException” public bool RemoveAll(T值) { 如果(计数=0) 返回false; 如果(计数=1) { if(mTop.数据等于(值)) { mTop=mTop.Next; 返回true; } } 其他的 { OurListNode pTmp=mTop; while(pTmp.N
public bool RemoveAll(T值)
{
如果(计数=0)
返回false;
如果(计数=1)
{
if(mTop.数据等于(值))
{
mTop=mTop.Next;
返回true;
}
}
其他的
{
OurListNode pTmp=mTop;
while(pTmp.Next!=null)
{
if(pTmp.Next.Data.Equals(值))
{
pTmp.Next=pTmp.Next.Next;
}
pTmp=pTmp.Next;
}
返回true;
}
返回false;
}
行中的pTmp.Next=pTmp.Next.Next
pTmp.Next.Next的赋值可能是null
,因此在中,while(pTmp.Next!=null)
pTmp
是null
并且没有Next
。同时检查它是否为null
while (pTmp != null && pTmp.Next != null)
在一些测试用例中,它突出显示while语句,并给我一个“System.NullReferenceException”OMG谢谢!!我试过了,它再也不会出错了。。但是它仍然不能以我希望的方式工作,因为我的测试代码的输出是:2:1:3:2:3:2:1:2 RemoveAll#12:3:2:3:2:2 RemoveAll#3 2:2:2 RemoveAll#2:2@Angela您缺少的是第一个和最后一个项目,而不是
pTmp。接下来
只使用else
块中的pTmp
。
while (pTmp != null && pTmp.Next != null)