using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data;namespace DisposeDemo
{ class Program { static void Main(string[] args) { PersonWrapper pw = new PersonWrapper(); pw.Dispose(); Console.WriteLine(pw.p == null); Console.Read(); } }public class PersonWrapper:IDisposable
{ public Person p = new Person() { Name = "abc" }; public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } private bool disposed = false; protected virtual void Dispose(bool disposing) { // Check to see if Dispose has already been called. if (!this.disposed) { // If disposing equals true, dispose all managed // and unmanaged resources. if (disposing) { p = null; // Dispose managed resources (like other .NET components) } // Dispose UNMANAGED resources (like P/Invoke functions) GC.Collect(); GC.WaitForPendingFinalizers(); } disposed = true; } } public class Person {public string Name { get; set; }
}
}