Array sauber löschen?

  • C#

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Array sauber löschen?

    Moin moin,
    eine Frage rein technischer Natur (vielleicht in Spieleprogrammierung falsch aufgehoben, aber ist halt für ein Spiel)

    Ich habe eine Klasse in der ich meine Vertices bereitstelle.
    Ich möchte flexibel welche hinzufügen können, was ich mit der unten aufgeführten Methode realisiere.
    Leider mache ich mir sorgen, dass das Überschreiben der Variable _vertices das alte Array nicht löscht sondern als Leiche im Speicher lässt.
    Irre ich mich, oder ist das wirklich so?

    In _vertices sind die Daten in einem Array gespeichert.


    C#-Quellcode

    1. public static void AddVertices(VertexPositionTexture[] vertices)
    2. {
    3. // Wenn wir schon Daten haben dann kopieren wir sie hinten dran
    4. if (_vertices != null)
    5. {
    6. VertexPositionTexture[] newArray = new VertexPositionTexture[_vertices.Length + vertices.Length];
    7. Array.Copy(_vertices, newArray, _vertices.Length);
    8. Array.Copy(vertices, 0, newArray, _vertices.Length, vertices.Length);
    9. _vertices = newArray;
    10. }
    11. else
    12. {
    13. _vertices = vertices;
    14. }
    15. }
    In Managed Code musst Du dir diesbezüglich keine Sorgen machen. Das macht der Garbage Collector alles automatisch.
    Wichtig ist nur, dass Du auf einem Objekt, das von ​IDisposable erbt, auch ​Dispose aufrufst, um nicht verwaltete Ressourcen freizugeben.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Rene M. Wewnn Du statt mit nem Array mit ner List<VertexPositionTexture> arbeiten würdest, kannst Du neue Elemente einfach mit .Add(vertice) bzw. .AddRange(vertices) hinten anhängen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!