为什么应用程序关闭?毕竟,析构函数应该有一个循环:
namespace Core
{
class Test
{
~Test() { while (true); }
}
class Program
{
static void Main(string[] args)
{
Test test = new Test();
}
}
}
为什么应用程序关闭?毕竟,析构函数应该有一个循环:
namespace Core
{
class Test
{
~Test() { while (true); }
}
class Program
{
static void Main(string[] args)
{
Test test = new Test();
}
}
}
因为在 C# 中,析构函数(或者更确切地说,称为终结器)的工作方式不同。它不会立即被调用,而是在某个时候被调用,即便如此,也只是在垃圾收集器删除该对象的情况下。由于不能保证垃圾收集器运行,因此也不能保证调用您的终结器。
此外,终结器在单独的线程中运行,如果终结器在应用程序结束时运行时间过长,则会被强制终止。
在您的情况下,程序很短并且不加载内存,很明显垃圾收集器很可能不会启动。
对于保证方法调用的语义来销毁你想要的对象,你需要实现一个接口
IDisposable并使用using.有关该主题的其他信息: