ホームページ >バックエンド開発 >C++ >C# 配列から値に基づいて要素を効率的に削除するにはどうすればよいですか?

C# 配列から値に基づいて要素を効率的に削除するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-20 20:50:14171ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。