循环中的C#列表循环?

时间:2018-11-09 15:29:08

标签: c# loops for-loop

我正在做一个课堂项目,到目前为止,这是我所拥有的。我知道代码找到匹配项时返回true,但我希望它一直循环运行,直到找不到更多实例为止。

我在for/while循环中查看了很多站点,但是我似乎无法正确理解语法和/或在应用逻辑时它不起作用。

public bool Remove(T toRemove)
{
    for (int i = 0; i < count; i++)
    {
        if (items[i].Equals(toRemove))
        {
            int removeIndex = i;
            for (int j = removeIndex; j < count - 1; j++)
            {
                items[j] = items[j + 1];
            }
            return true;
        }
    }
    return false;
}

4 个答案:

答案 0 :(得分:2)

如果要完成循环,请不要返回。而是将结果保留在var上,您应该最后返回:

    public bool Remove(T toRemove)
    {
        bool result = false;
        for (int i = 0; i < count; i++)
        {
            if (items[i].Equals(toRemove))
            {
                int removeIndex = i;
                for (int j = removeIndex; j < count - 1; j++)
                {
                    items[j] = items[j + 1];
                }
                result = true;
            }
        }
        return result;
    }

答案 1 :(得分:1)

//Use a boolean variable and set it to true if an item is found, 
//and continue your loop until you go through all elements, then return the boolean value.  

public bool Remove(T toRemove)
{
        bool match= false; //boolean to track if any match is found
        for (int i = 0; i < count; i++)
        {
            if (items[i].Equals(toRemove))
            {
                int removeIndex = i;
                for (int j = removeIndex; j < count - 1; j++)
                {
                    items[j] = items[j + 1];
                }
                match= true;
            }
        }

        return match;
}

答案 2 :(得分:1)

只需将结果保存在变量中,然后在循环完成后返回即可:

public bool Remove(T toRemove)
{
    bool result = false;
    for (int i = 0; i < count; i++)
    {
        if (items[i].Equals(toRemove))
        {
            int removeIndex = i;
            for (int j = removeIndex; j < count - 1; j++)
            {
                items[j] = items[j + 1];
            }
            result = true;
        }
    }
    return result;
}

答案 3 :(得分:0)

我认为您想要做的是声明一个名为“结果”的布尔并将其实例化为false。在返回true的循环中,将“结果”设置为true。最后,在您返回false的地方,返回“结果”