Hallöchen, da ich mir gestern das Snippet "Array zur Laufzeit erweitern" von EffEff angesehen habe, und eine kleine Verbesserung vorgeschlagen habe, ist mir doch glatt noch eine elegantere Lösung eingefallen. Warum nicht einfach Resize und Append per Erweitungsmethoden zur Verfügung stellen?
Leider ist es aber so, dass nur Referenz-Typen in einer Erweiterungsmethode geändert werden können. Daher muss beim Aufruf der Resize-Funktion eine Zuweisung zu einem neuen Array erfolgen.
Hier meine zwei Array-Erweiterungen
/// <summary>
///
/// </summary>
public static class ArrayExtensions
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="Source"></param>
/// <param name="NewSize"></param>
public static T[] Resize<T>(this T[] Source, int NewSize)
{
Array.Resize<T>(ref Source, NewSize);
return Source;
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="Source"></param>
/// <param name="NewElement"></param>
public static T[] Append<T>(this T[] Source, T NewElement)
{
Source = Source.Resize(Source.Length + 1);
Source[Source.Length - 1] = NewElement;
return Source;
}
}
3 Kommentare zum Snippet