Advertisement
Guest User

Untitled

a guest
Nov 18th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.91 KB | None | 0 0
  1. using System;
  2.  
  3. delegate void D(ref S s);
  4.  
  5. interface I
  6. {
  7.     void M(D d);
  8. }
  9.  
  10. struct S : I
  11. {
  12.     public void M(D d)
  13.     {
  14.         d(ref this);
  15.     }
  16. }
  17.  
  18. static class Program
  19. {
  20.     static void Main()
  21.     {
  22.         I i = new S();
  23.         WeakReference w = new WeakReference(i);
  24.         i.M((ref S s_) => {
  25.             Console.WriteLine("Entered M");
  26.  
  27.             GC.Collect();
  28.             GC.WaitForPendingFinalizers();
  29.             Console.WriteLine("WeakReference IsAlive: " + w.IsAlive);
  30.             Console.WriteLine("WeakReference Target: " + w.Target);
  31.  
  32.             i = null;
  33.  
  34.             GC.Collect();
  35.             GC.WaitForPendingFinalizers();
  36.             Console.WriteLine("WeakReference IsAlive: " + w.IsAlive);
  37.             Console.WriteLine("WeakReference Target: " + w.Target);
  38.  
  39.             // Console.WriteLine(s_);
  40.  
  41.             Console.WriteLine("Exiting M");
  42.         });
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement