在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中文网其他相关文章!