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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-20 20:37:10770ブラウズ

How Can I Efficiently Remove Elements from C# Arrays?

C# で配列要素を削除する効率的な方法

C# では、配列は同じ型の値を格納する連続したメモリ ブロックとして実装されます。ただし、ArrayList などの他のコレクションとは異なり、配列の要素操作の柔軟性は限られています。配列からの要素の削除を処理する方法は次のとおりです:

値による要素の削除

特定の値のすべてのインスタンスを削除するには、.Where() LINQ 拡張メソッド (.NET Framework 3.5 以降を対象とする場合) または .NET Framework 2.0 の Array.FindAll() メソッドを使用できます。次のコードを考えてみましょう:

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

// LINQ
numbers = numbers.Where(val => val != numToRemove).ToArray();

// 非LINQ
numbers = Array.FindAll(numbers, isNotFour).ToArray();
bool isNotFour(int n) { return n != 4; }</code>

値の最初のインスタンスを削除します

値の最初のインスタンスのみを削除したい場合は、LINQ または非 LINQ アプローチを再度利用できます。

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

// LINQ
int numIdx = Array.IndexOf(numbers, numToRemove);
numbers = numbers.Where((val, idx) => idx != numIdx).ToArray();

// 非LINQ
int numIdx = Array.IndexOf(numbers, numToRemove);
List<int> tmp = new List<int>(numbers);
tmp.RemoveAt(numIdx);
numbers = tmp.ToArray();</code>

要約すると、配列は効率的な要素の保存と取得を提供しますが、要素操作の柔軟性が限られているため、RemoveAt() などのメソッドは不適切です。代わりに、上で概説した方法は、配列から値を削除するための効率的な代替手段を提供します。

以上がC# 配列から要素を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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