C# 配列からの要素の削除: 実践ガイド
標準の C# 配列の操作は、特に要素の削除に関しては難しい場合があります。 リストのようなコレクションとは異なり、配列には組み込みの RemoveAt()
メソッドがありません。この記事では、配列から要素を削除するための効率的なソリューションについて説明します。
配列変更の挑戦
配列の固有の固定サイズにより、要素を直接削除することが困難になります。 要素の値を null
またはデフォルトに設定するだけでは、実際には削除されません。配列は、潜在的に空のスロットを含む同じサイズを維持します。
ソリューション戦略
これに対処する 2 つの主なアプローチ:
リスト変換: 最も単純な解決策には、配列を List<T>
に変換することがよくあります。リストには RemoveAt()
メソッドが用意されており、要素の削除が簡単になります。 要素を削除した後、必要に応じてリストを配列に変換して戻すことができます。
拡張メソッド: リスト変換を避けたい場合は、カスタム拡張メソッドを使用すると、より直接的なアプローチが提供されます。このメソッドは、削除する要素を除いて元の配列から要素をコピーして、新しい配列を作成します。
拡張メソッドの実装
この拡張メソッドは、指定されたインデックスにある要素を効率的に削除します。
<code class="language-csharp">public static T[] RemoveAt<T>(this T[] source, int index) { if (source == null || index < 0 || index >= source.Length) { return source; // Handle invalid input } T[] dest = new T[source.Length - 1]; Array.Copy(source, 0, dest, 0, index); Array.Copy(source, index + 1, dest, index, source.Length - index - 1); return dest; }</code>
この改良版には、null 配列または無効なインデックスに対するエラー処理が含まれています。 使い方は簡単です:
<code class="language-csharp">Foo[] bar = GetFoos(); bar = bar.RemoveAt(2);</code>
この拡張メソッドは、リスト変換に頼らずに配列から要素を削除するクリーンで効率的な方法を提供し、この一般的なプログラミング タスクに直接的かつ簡潔なソリューションを提供します。
以上がC# で通常の配列から要素を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。