创建一个对象是删除旧的?

Jab*_*ovo 0 c# constructor destructor object instance

假设我创建了一个对象:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreateObjOnobj
{
class Program
{
    static void Main(string[] args)
    {
        testcreate myobjecttotest;
        myobjecttotest = new testcreate();
        myobjecttotest.num = 20;
        myobjecttotest.bill = true;
        myobjecttotest = new testcreate();
        Console.WriteLine(myobjecttotest.bill.ToString());
        Console.ReadKey();
    }
}
class testcreate
       {
        public int num = 0;
        public bool bill = false;
       }

}
Run Code Online (Sandbox Code Playgroud)

这段代码是否会自动删除对象并创建一个新对象而不会丢失内存?

谢谢

fel*_*x-b 5

不完全是.

实际发生的是您更改指向第一个对象的变量,现在它指向第二个对象.从那一刻开始,没有人再指向第一个对象了.

由于.NET配备了自动内存管理功能,垃圾收集器会定期检查没有"根"的对象 - 没有人持有引用的对象.它从内存中删除了这样的"孤儿"对象.

但是 - 您不能对垃圾收集何时发生做出任何假设.有时会发生这种情况,这就是你所知道的.

通常,当您创建第二个对象并将变量更改为指向第二个对象时,最终会在内存中生成两个对象.有时候,垃圾收集器会删除第一个对象.