>从c#数组中删除元素:实用指南
>操纵标准C#数组可能很棘手,尤其是在删除元素时。 与列表这样的集合不同,数组没有内置的RemoveAt()
方法。本文探讨了从数组中删除元素的有效解决方案。
数组修改的挑战
>固有的固定尺寸阵列使直接元件删除变得困难。 只需将元素的值设置为null
>或默认值实际上并不会将其删除;阵列仍然保持相同的大小,并有一个潜在的空插槽。
解决方案策略
>两种主要方法解决了以下方法:
> 列表转换:最简单的解决方案通常涉及将数组转换为List<T>
。列表提供了RemoveAt()
方法,使元素删除直接删除。 删除元素后,您可以在需要时将列表转换回数组。
扩展方法:对于那些喜欢避免列表转换的人,自定义扩展方法提供了更直接的方法。此方法创建一个新数组,复制原始元素,不包括要删除的元素。
>实现扩展方法
>此扩展方法有效地在给定索引上删除了元素:
<code class="language-csharp">public static T[] RemoveAt<T>(this T[] source, int index) { if (source == null || index < 0 || index >= source.Length) { return source; // Handle invalid input } 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[] bar = GetFoos(); bar = bar.RemoveAt(2);</code>
以上是如何在 C# 中高效地从常规数组中删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!