首先看一段简单的代码
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,也想知道堆和栈上发生了什么,求讨论呀