如何从List<T>C#中删除对象并返回删除的对象?
是否RemoveAt会破坏物体?我是否需要首先制作对象的深层副本然后调用RemoveAt?
Dav*_*ier 11
RemoveAt不会破坏对象,也不需要深层副本.
var result = list[i];
list.RemoveAt(i);
return result;
Run Code Online (Sandbox Code Playgroud)
RemoveAt是O(n - i)vs Remove是O(n)(其中n是长度,i是要去除的元素的索引).删除元素后,必须将其后的所有元素都移除.
根据此文档,如果您想要以最高效的方式删除元素,请将其与last,element交换,然后将其删除.这不保持如上所述的顺序.从理论上讲,这意味着删除列表的最后一个元素是O(1).
var result = list[i];
list[i] = list[list.Length-1];
list.RemoveAt(list.Length-1);
return result;
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
var listObject = list.ElementAt(index);
list.Remove(listObject);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3180 次 |
| 最近记录: |