9.8. Inserting and Removing Items from an Array
Problem
You need the ability to insert
and remove items from a standard array
(System.Array
). When an item is inserted, it
should not overwrite the item where it is being inserted; instead, it
should be inserted between the element at that index and the previous
index. When an item is removed, the void left by the element should
be closed by shifting around the other elements in the array.
However, the Array
type has no usable method to
perform these operations.
Solution
If possible, switch to an ArrayList
instead. If
this is not possible, use the approach shown in the following class.
Two methods insert and remove items from the array. The
InsertIntoArray
method will insert an item into
the array without overwriting any data that already exists in the
array. The RemoveFromArray
will remove an element
from the array:
using System; public class ArrayUtilities { public void InsertIntoArray(Array target, object value, int index) { if (index < target.GetLowerBound(0) || index > target.GetUpperBound(0)) { throw (new ArgumentOutOfRangeException("index", index, "Array index out of bounds.")); } else { Array.Copy(target, index, target, index + 1, target.Length - index - 1); } target.SetValue(value, index); } public void RemoveFromArray(Array target, int index) { if (index < target.GetLowerBound(0) || index > target.GetUpperBound(0)) { throw (new ArgumentOutOfRangeException("index", index, "Array index out of bounds.")); } else if (index ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.