Eigene statische Funktion um ein Array zur vergrößern

Manchmal kommt man an einem Punkt, an dem man ein Array um bestimmte Elemente erweitern möchte. Microsoft bietet dazu die Funktion Array.Resize<>. Manchmal jedoch macht diese Funktion Probleme und funktioniert nicht so, wie man es erwartet. Abhilfe schafft hier meine statische Funktion, die ein Array, egal welchen Typs, um eine (fast) beliebe Anzahl an Elementen erweitert und als neues Array des selben Typs zurückgibt.

/// <summary>
/// Vergrößert das angegebene Array vom Typ T um eine bestimmte Größe und gibt es zurück.
/// </summary>
/// <typeparam name="T">Der Typ des Arrays</typeparam>
/// <param name="Arr">Das Array, welches vergrößert werden soll.</param>
/// <param name="AddElements">Die Anzahl an zusätzlichen Elementen, die hinzugefügt werden sollen.</param>
/// <returns>Vergrößertes Array vom Typ T</returns>
public static T[] ResizeArray<T>(T[] Arr, int AddElements)
{
    // Prüfen, ob das alte Array null ist. Wenn nicht, dann addiere AddElements auf die Größe des alten Arrays auf
    // und übertrage alle Elemente vom alten Array auf newArray.
    T[] newArray;
    if (Arr != null)
    {
        newArray = new T[Arr.Length + AddElements];
        for (int i = 0; i < Arr.Length; i++)
        {
            newArray[i] = Arr[i];
        }
    }
    else
    {
        newArray = new T[1];
    }
    return newArray;
}

Die Benutzung der Funktion ist denkbar einfach (hier Anhand einer eigenen Klasse demonstiert):

public void main()
{
  ClientConfiguration.UserAction[] UserActions = new ClientConfiguration.UserAction[5];
  // Die Elemente des Arrays wahlweise mit Werte befüllen...
  UserActions[0] = new ClientConfiguration.UserAction();
  UserActions[1] = new ClientConfiguration.UserAction();
  // [...]
 
 
  // Das Array UserActions um drei weitere Elemente erweitern.
  // Alle bisherigen Elemente werden übernommen.
  UserActions = ResizeArray<ClientConfiguration.UserAction>(UserActions, 3);
 
  // Die neu hinzugefügten Elemente zuweisen.
  UserActions[UserActions.Lenght - 3] = new ClientConfiguration.UserAction();
  UserActions[UserActions.Lenght - 2] = new ClientConfiguration.UserAction();
  UserActions[UserActions.Lenght - 1] = new ClientConfiguration.UserAction();
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert