C#中的弱引用

用代码说明:

ExpandedBlockStart.gif 代码
     class  Program
    {
        
static   void  Main( string [] args)
        {
            DoWork();
            Console.WriteLine(P.Target 
==   null );
            GC.Collect();
            Console.WriteLine(P.Target 
==   null );

            Console.ReadLine();
        }

        
public   static  WeakReference P;
        
public   static   void  DoWork()
        {
            var p 
=  GetPerson();
            P 
=   new  WeakReference(p);
        }

        
public   static  Person GetPerson()
        {
            
return   new  Person();
        }
    }
    
public   class  Person : IDisposable
    {
     
        
public  Person()
        {
        
            
for  ( int  i  =   0 ; i  <   new  Random().Next( 18 80 ); i ++ )
            {
                
this .Memo.Append(( char ) new  Random().Next( 97 123 ));
            }
        }


        
public  StringBuilder Memo {  get set ; }


        
public   bool  IsDisposed {  get set ; }
        
#region  IDisposable 成员

        
public   void  Dispose()
        {
            
if  ( ! this .IsDisposed)
            {
                Console.WriteLine(
" Person Dispose... " );

                
this .Memo.Remove( 0 this .Memo.Length);
                
this .IsDisposed  =   true ;
                GC.SuppressFinalize(
this );
            }
        }

        
#endregion

        
~ Person()
        {
            Console.WriteLine(
" Person Unctor... " );
            
this .Dispose();
        }
    }

转载于:https://www.cnblogs.com/sofire/archive/2010/05/26/1744266.html

猜你喜欢

转载自blog.csdn.net/weixin_34336526/article/details/92638088