>有效地从.NET数组中删除元素
与List<T>
这样的动态阵列不同,标准.NET阵列缺少直接的Remove
方法。 本文探讨了从常规阵列中删除元素的有效策略。
利用Linq进行元素删除>
一种简洁的方法利用linq过滤和重建数组:这将数组转换为
<code class="language-csharp">var foos = new Foo[] { foo1, foo2, foo3, foo4 }; foos = foos.Where(f => f.Id != idToRemove).ToArray();</code>
),然后将过滤后的列表转换为数组。
List<T>
f.Id != idToRemove
>
功能的自定义扩展方法
>这为常规数组中缺少的功能提供了更直接的替换。 请记住,这两种方法都会创建一个 阵列;原始阵列保持不变。 选择最适合您的需求和编码样式的方法。RemoveAt
>
为了获得更多控制,可以实现模仿RemoveAt
>此方法有效地处理边缘案例,并在指定索引之前和之后复制元素到新数组,从而有效地在给定索引处删除元素。 用法:<code class="language-csharp">public static T[] RemoveAt<T>(this T[] source, int index)
{
if (index < 0 || index >= source.Length)
throw new ArgumentOutOfRangeException(nameof(index));
T[] dest = new T[source.Length - 1];
Array.Copy(source, 0, dest, 0, index);
Array.Copy(source, index + 1, dest, index, source.Length - index - 1);
return dest;
}</code>
<code class="language-csharp">Foo[] foos = GetFoos();
foos = foos.RemoveAt(2);</code>
RemoveAt
以上是如何从 .NET 中的常规数组中删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!