析造函数,为何用断点和跟踪都看不到呢?如何查看析构函数的执行呢?
-----------------------------------------------------以下是一个最简单的程序,我想查看一下,析构函数是何时发生作用的,但是却看不到,加了跟踪,不打印信息,加了断点,也执行不到断点,这是为什么呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace p89_2
{
public class parentclass
{
public parentclass()
{
Console.WriteLine("父类构造");
} public void print()
{
Console.WriteLine("父类中的print");
}
~parentclass()
{
Console.WriteLine("父类析构");
}
} class childclass:parentclass
{
public childclass()
{
Console.WriteLine("子类构造");
}
~childclass()
{
Console.WriteLine("子类析构");
} static void Main(string[] args)
{
childclass child = new childclass();
child.print();
Console.ReadKey();
}
}
}
-----------------------------------------------------以下是一个最简单的程序,我想查看一下,析构函数是何时发生作用的,但是却看不到,加了跟踪,不打印信息,加了断点,也执行不到断点,这是为什么呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace p89_2
{
public class parentclass
{
public parentclass()
{
Console.WriteLine("父类构造");
} public void print()
{
Console.WriteLine("父类中的print");
}
~parentclass()
{
Console.WriteLine("父类析构");
}
} class childclass:parentclass
{
public childclass()
{
Console.WriteLine("子类构造");
}
~childclass()
{
Console.WriteLine("子类析构");
} static void Main(string[] args)
{
childclass child = new childclass();
child.print();
Console.ReadKey();
}
}
}
你按Ctrl+F5可以看到效果。
{
public parentclass()
{
Console.WriteLine("父类构造");
} public void print()
{
Console.WriteLine("父类中的print");
}
~parentclass()
{
Console.WriteLine("父类析构");
}
}class childclass : parentclass
{
public childclass()
{
Console.WriteLine("子类构造");
}
~childclass()
{
Console.WriteLine("子类析构");
} static void Main(string[] args)
{
childclass child = new childclass();
child.print();
child = null;
GC.Collect();
GC.WaitForFullGCComplete();
Console.ReadKey();
}
}试试
child = null;
//手动调用GC回收
GC.Collect();
//这是在framework2.0 sp1中新增的API,可等待回收完成
GC.WaitForFullGCComplete();GC以静态类的方式提供了很多有用的API,楼主可以仔细研究一番
GC.WaitForFullGCComplete();
-------------------------------------------
这两行代码什么意思呀?请指教。