Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中创建RemoveAll方法?_C#_Nullreferenceexception - Fatal编程技术网

如何在C#中创建RemoveAll方法?

如何在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

它应该从堆栈中删除所有出现的值。 这是我的代码,但是我的while语句有问题

在某些测试用例中,它突出显示while语句并向我抛出一个未处理的异常“System.NullReferenceException”

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)