删除所有不工作的元素

abh*_*bhi 12 c# collections list

我在我正在研究的.NET项目中注意到了这个功能.

    private static void RemoveAllElements(ref List<int> listToBeRemoved)
    {
        foreach (var i in listToBeRemoved)
        {
            listToBeRemoved.Remove(i);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是从列表中删除所有元素的最快方法吗?我也注意到这个函数没有捕获任何异常.我应该改变吗?这是现有的代码.

vcs*_*nes 44

我不明白为什么你不能简化它

listToBeRemoved.Clear();
Run Code Online (Sandbox Code Playgroud)

您可以查看MSDN文档以获取更多详细信息.

我认为您不需要添加任何异常处理逻辑.该Clear方法在内部使用Array.Clear,作为Success和WillNotCorruptState的可靠性契约.我无法想象会如何引发异常.


Jef*_*Sax 8

list.Clear()
Run Code Online (Sandbox Code Playgroud)

请参阅文档:http://msdn.microsoft.com/en-us/library/dwb5h52a.aspx

更改您枚举的集合会使枚举器无效,因此这是非常糟糕的做法.请参阅List.GetEnumerator上的备注:

只要集合保持不变,枚举器仍然有效.如果对集合进行了更改(例如添加,修改或删除元素),则枚举数将无法恢复,并且其行为未定义.

Clear方法本身不会抛出异常,但如果listToBeRemovednull,则会得到一个异常NullReferenceException.


Moo*_*ght 5

为什么不:

listToBeRemoved.Clear();
Run Code Online (Sandbox Code Playgroud)