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

时间:2016-09-18 05:52:13

标签: c# nullreferenceexception

它应该从Stack中删除所有出现的值。 这是我的代码,但它在某种程度上与我的while语句有问题。

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

public bool RemoveAll(T value)
{
    if (Count == 0)
        return false;

    if (Count == 1)
    {
        if (mTop.Data.Equals(value))
        {
            mTop = mTop.Next;
            return true;
        }
    }

    else
    {
        OurListNode<T> pTmp = mTop;
        while (pTmp.Next != null)
        {
            if (pTmp.Next.Data.Equals(value))
            {
                pTmp.Next = pTmp.Next.Next;
            }
            pTmp = pTmp.Next;
        }
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:1)

https://www.google.com//search?q=fun行中pTmp.Next = pTmp.Next.Next;的指定值可能为pTmp.Next.Next,因此null while (pTmp.Next != null)中的pTmpnull,而不是Nextnull。检查while (pTmp != null && pTmp.Next != null) 以及

4.2.0-beta