1. 程式人生 > >有關C#中的引用類型的內存問題

有關C#中的引用類型的內存問題

宋體 銷毀 回收機制 定義 sta 如果 point 類型 val

對於一個類,如果定義後(記作對象a),將另外一個對象b直接賦值(“a = b”)給它,則相當於將地址賦值給了這個對象。當另外一個對象b不再對這塊地址應用時,a由於對這塊地址仍在使用,這塊地址的指向的棧空間仍然不被銷毀。直道沒有對象再對其引用,系統將按照回收機制對其進行回收。

Demo如下:

 public class ObjectRef
    {
        public static void Demo_Main()
        {
            PointD a, b, c;

            b = new PointD(100
, 58); a = b; b = new PointD(200, 11); Console.WriteLine("a is now {0}, {1}", a.X, a.Y); // a is now 100, 58 c = new PointD(300, 22); a = c; c.X = 500; Console.WriteLine("a is now {0}, {1}", a.X, a.Y); // a is now 500, 22
} } public class PointD { int x; int y; public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } }
public PointD(int x, int y) { this.x = x; this.y = y; } }

有關C#中的引用類型的內存問題