I wrote this code:
            dog joe = new dog();
            WeakReference wr = new WeakReference(joe);
            if (wr.IsAlive)
            {
                Console.WriteLine("Yes,first time");
            }
            else
            {
                Console.WriteLine("No,first time");
            }
            GC.Collect();
            if (wr.IsAlive)
            {
                Console.WriteLine("Yes,second time");
            }
            else
            {
                Console.WriteLine("No,second time");
            }
And I expected to have this result: Yes,first time No,second time
but it seems that GC didn't collect my WeakReference's target(joe). and result was: Yes,first time Yes,second time
What is my problem?.. do I misunderstand the WeakReferences?
 
     
    