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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值