You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将List<T>就地裁剪为自身子列表(无需创建新列表实例)

实现方案

你可以通过两次 RemoveRange 调用实现完全等效的就地操作,无需创建新的列表实例:

// myList 是 List<T> 类型对象
// 先删除偏移量 offset 之前的所有元素
myList.RemoveRange(0, offset);
// 再删除需要保留的 number 个元素之外的尾部内容
myList.RemoveRange(number, myList.Count - number);

说明

  • 上述实现的异常逻辑和原生 GetRange 完全对齐:如果 offset < 0、number < 0 或是 offset + number 超过原列表总长度,都会抛出 ArgumentOutOfRangeException
  • 操作全程在原列表实例上执行,不会产生新的 List<T> 对象,仅会在删除元素时触发内部存储数组的元素移位,性能优于创建新列表的 GetRange 方案,保留的元素越多性能优势越明显。

内容的提问来源于stack exchange,提问作者Paul Masri-Stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:24:04