Feedback

C# - Kleine Array-Erweiterung

Veröffentlicht von am 4/20/2011
(0 Bewertungen)
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;
        }
    }
Abgelegt unter Array, Erweiterung, Append, Resize.

3 Kommentare zum Snippet

EffEff schrieb am 4/20/2011:
Kommt mir bekannt vor.. :)
Legion schrieb am 4/20/2011:
Hehe ;)
Fawk_18 schrieb am 2/14/2012:
Ich finde deine Lösung sehr elegant und muss gestehen dass ich bisher nicht daran gedacht hatte eine Extension dafür zu schreiben. Nichts desto trotz muss ich sagen das mir persönlich Generic Lists besser gefallen als Arrays (mir ist bewusst das diese langsamer sind). Man kann aber mit diese einfach und unkompliziert verändert (d.h. Remove und Add aufrufen) und brauch keine Extensions schreiben.

Lg Fawk_18
 

Logge dich ein, um hier zu kommentieren!