C#类动态内存的初始化

时间:2014-07-11 18:08:52

标签: c# constructor destructor idisposable

我正在使用一个在构造期间动态分配数组的类,如下所示:

    class HeightMap
{
    private int width;
    private int height;
    private ulong numPixels;
    private float[,] value;

    public HeightMap(int width, int height)
    {
        if (width <= 0) throw new Exception("Invalid Dimension: Width");
        if (height <= 0) throw new Exception("Invalid Dimension: Height");

        // Make sure there is an uneven width and height (for allowing diamond square algorithm)
        if ((width % 2) == 0) width++;
        if ((height % 2) == 0) height++;

        this.numPixels = (ulong)(width * height);
        this.width = width;
        this.height = height;
        this.value = new float[width, height];
    }


}

我是否需要实施IDisposable以在销毁时释放value数组,或者在对象失效时自动处理? [构造函数中这种分配方法可能还有什么问题吗?]

2 个答案:

答案 0 :(得分:2)

您通过托管代码分配内存。你不必担心它。

答案 1 :(得分:1)

您无需使用IDisposable。它们通常与非托管代码一起使用。垃圾收集器将负责您的对象处理。