首页 >后端开发 >C++ >如何高效地按值从 C# 数组中删除元素?

如何高效地按值从 C# 数组中删除元素?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-20 20:50:14147浏览

How to Efficiently Delete Elements from a C# Array by Value?

在C#中从数组中删除元素

场景:

假设你有一个整数数组:

<code class="language-c#">int[] numbers = {1, 3, 4, 9, 2};</code>

你想删除具有特定值(例如,4)的元素。虽然可以使用ArrayList来管理数组,但其RemoveAt方法不允许基于元素值进行筛选。

解决方案:

要按名称(值)从数组中删除元素,可以使用LINQ或非LINQ方法。

LINQ方法(.NET Framework 3.5 ):

使用LINQ的Where方法,可以过滤元素并排除要删除的元素:

<code class="language-c#">int[] numbers = { 1, 3, 4, 9, 2 };
int numToRemove = 4;
numbers = numbers.Where(val => val != numToRemove).ToArray();</code>

非LINQ方法(.NET Framework 2.0 ):

对于没有LINQ的环境,可以使用内置的Array方法来达到相同的结果:

<code class="language-c#">static bool isNotFour(int n)
{
    return n != 4;
}

int[] numbers = { 1, 3, 4, 9, 2 };
numbers = Array.FindAll(numbers, isNotFour);</code>

仅删除第一个实例:

如果只想删除特定元素的第一次出现:

LINQ方法:

<code class="language-c#">int[] numbers = { 1, 3, 4, 9, 2, 4 };
int numToRemove = 4;
int numIndex = Array.IndexOf(numbers, numToRemove);
numbers = numbers.Where((val, idx) => idx != numIndex).ToArray();</code>

非LINQ方法:

<code class="language-c#">int[] numbers = { 1, 3, 4, 9, 2, 4 };
int numToRemove = 4;
int numIdx = Array.IndexOf(numbers, numToRemove);
List<int> tmp = new List<int>(numbers);
tmp.RemoveAt(numIdx);
numbers = tmp.ToArray();</code>

以上是如何高效地按值从 C# 数组中删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn