C#で弱い参照

コードの記述を持ちます:

 

ExpandedBlockStart.gif コード
     クラス  プログラム
    {
        
静的 ボイド メイン(文字列[]引数)        {             DoWork()。            Console.WriteLineを(P.Target  == NULL )。            GC.Collect();             Console.WriteLineを(P.Target  == NULL )。            Console.ReadLine();         } パブリック静的 弱い参照P。パブリック静的ボイド DoWork()        {             VARのP  =  GetPerson()。            P  = 新しい 弱い参照(P)。        }  


 

 




        
 
        
   


 


        
公共の 静的な 人GetPerson()        { 返す新しい )(人を。        }     } パブリッククラス 人:IDisposableを    { パブリック 人()        { ため (int型 I  = 0 ; iは  < 新しい ランダム()次に(18 、  80 ); iは++を            { この.Memo.Append((CHAR 新しい ランダム().Next(97 、  123 ));             }         }  

            
 


    
 

     
        


        
            
   

                





        
公共  のStringBuilderメモ{  取得します 。  セット ; }


        
パブリック ブール IsDisposed {  得ます。 セット; } #region  IDisposableを成员公共のボイド のDispose()        { 場合 (この.IsDisposed)            {                 Console.WriteLineを(" 人処分... " ); この.Memo.Remove(0 、  この.Memo.Length)。これは.IsDisposed  = ;                 GC.SuppressFinalize(  
        


        
 

            




                

                
 
この );
            }
        }

        
#endregion 人()        {             Console.WriteLineを(" 人物Unctor ... " )。この.Dispose();         }     }

        



            


 

 

ます。https://www.cnblogs.com/sofire/archive/2010/05/26/1744266.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34336526/article/details/92638088