c#是否可以重新创建一个数组?

时间:2017-01-10 21:55:40

标签: c# arrays garbage-collection

我有一个班级CircularBuffer,其中有一个方法CreateBuffer。该类做了很多事情,但偶尔我需要更改类中使用的数组的大小。我不再需要这些数据了。这是班级:

    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
    }

现在缓冲区的大小最多为100 x 2048浮点数。这会导致任何内存问题,还是会自动替换而没有问题? 感谢

1 个答案:

答案 0 :(得分:2)

从技术上讲,你不会重新创造任何东西。您只是创建一个新数组并覆盖变量的值(可以说是它所引用的数组的地址)。

因此,重要的是要区分你真正取代的东西;你没有替换数组,只是对数组的引用。

有问题吗?没有。根据您的代码,旧数组将不再可访问,因此有资格由GC收集。如果集合发生在GC上,但你不应该担心它。