2017-01-10 3 views
1

Ich habe eine Klasse, CircularBuffer, die eine Methode CreateBuffer hat. Die Klasse macht eine Reihe von Dingen, aber gelegentlich muss ich die Größe eines Arrays ändern, das in der Klasse verwendet wird. Ich brauche die Daten nicht mehr. Hier ist die Klasse:C# Ist es möglich, ein Array neu zu erstellen?

static class CircularBuffer 
    { 
     static Array[,] buffer; 
     static int columns, rows; 

     public static void CreateBuffer(int columns, int rows) 
     { 
      buffer = new Array[rows,columns]; 
     } 

     //other methods that use the buffer 
    } 

Jetzt ist die Größe des Puffers bis zu 100 x 2048 Floats. Wird dies zu Speicherproblemen führen oder wird es automatisch ohne Probleme ersetzt? Danke

+3

Kein Problem ..... –

+1

Also warum verwenden Sie mehrdimensionale Arrays anstelle von anderen, bessere Sammlungsart wie 'List ' kombiniert mit Klassen oder Strukturen? –

Antwort

2

Sie sind, technisch gesehen, nichts neu zu erstellen. Sie erstellen einfach ein neues Array und überschreiben den Wert der Variablen (sozusagen die Adresse des Arrays, auf das verwiesen wird).

Es ist daher wichtig, dass Sie unterscheiden, was Sie wirklich ersetzen; Sie ersetzen das Array nicht, nur die Referenz darauf.

Probleme? Keiner. Mit Ihrem Code ist das alte Array nicht mehr erreichbar und kann daher vom GC abgeholt werden. Ob die Sammlung jemals passiert, liegt an der GC, aber Sie sollten sich nicht darum kümmern.

+0

Vielen Dank, sehr geschätzt – Tom

Verwandte Themen