首先看一段简单的代码

 1     class MyClass
 2     {
 3         private string myFlag;
 4         public MyClass()
 5         {
 6             myFlag = "Test";
 7         }
 8         public void PrintFlag()
 9         {
10             Console.WriteLine(myFlag);
11             Console.ReadLine();
12         }
13 
14     }
15     delegate void MyDelegate();
16 
17     class Program
18     {
19         static void Main(string[] args)
20         {
21             MyClass myClass = new MyClass();
22             MyDelegate myDelegate = myClass.PrintFlag;
23             myClass = null;
24             GC.Collect();
25             myDelegate();
26         }
27     }

它的结果,就是打印出了“Test”

那么我在第21行new出来的实例,是谁持有对它的引用呀?

我还是看不懂IL,也想知道堆和栈上发生了什么,求讨论呀

posted on 2012-09-01 09:25  绍体  阅读(206)  评论(0编辑  收藏  举报