如何从List<T>
C# 中删除对象并返回删除的对象?
RemoveAt
会破坏对象吗?我是否需要先制作对象的深层副本然后调用RemoveAt
?
RemoveAt 不会破坏对象并且不需要深拷贝。
var result = list[i];
list.RemoveAt(i);
return result;
RemoveAt
是 O( n - i ) vs Remove
which is 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;
你可以这样做:
var listObject = list.ElementAt(index);
list.Remove(listObject);
我很抱歉我误解了这个问题。
这是我的回答,你应该使用函数。
public xxxx sss(List s,var i)
{
try
{
var result = s.ElementAt(i);
s.Remove(result);
}
catch(Exception e)
{
Console.WriteLine(e.message);
}
}