C# 配列から要素を効率的に削除する
C# 配列のサイズは本質的に固定です。要素を直接削除することはできません。 ただし、要素の削除を効果的にシミュレートする方法がいくつかあります。 最適なアプローチは、.NET Framework のバージョンと特定のニーズによって異なります。
LINQ の活用 (.NET Framework 3.5 以降の場合):
LINQ は、配列操作のための洗練されたソリューションを提供します。 特定の値の出現をすべて削除するには:
<code class="language-csharp">int[] numbers = { 1, 3, 4, 9, 2, 4 }; int valueToRemove = 4; numbers = numbers.Where(num => num != valueToRemove).ToArray();</code>
最初の出現箇所のみを削除するには、少し異なるアプローチが必要です。
<code class="language-csharp">int indexToRemove = Array.IndexOf(numbers, valueToRemove); numbers = numbers.Where((num, index) => index != indexToRemove).ToArray();</code>
非 LINQ メソッド (.NET Framework 2.0 以降の場合):
古い .NET フレームワークの場合は、従来の配列メソッドが必要です。 1 つの手法では、カスタム述語関数を使用します。
<code class="language-csharp">static bool isNotFour(int n) { return n != 4; } int[] numbers = { 1, 3, 4, 9, 2, 4 }; numbers = Array.FindAll(numbers, isNotFour).ToArray();</code>
または、配列を List<T>
に変換し、要素を削除して、元に変換します。
<code class="language-csharp">int[] numbers = { 1, 3, 4, 9, 2, 4 }; int valueToRemove = 4; int indexToRemove = Array.IndexOf(numbers, valueToRemove); List<int> tempList = new List<int>(numbers); tempList.RemoveAt(indexToRemove); numbers = tempList.ToArray();</code>
重要な考慮事項: 例外を防ぐため、削除を試みる前に、Array.IndexOf
を使用して配列内の要素の存在を必ず確認してください。 一般に、LINQ を使用すると、より簡潔で読みやすいコードが提供されますが、非 LINQ メソッドは古いフレームワークとの互換性を提供します。
以上がC# で配列から要素を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。