首頁 >後端開發 >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