-
متد مخرب
با سلام
من در متدها شی ای که از کلاس می سازم و از آن استفاده می کنم
چه جوری میتونم بعد از اینکه کارم با شیء مورد نظر تموم شد آنرا تخریب کنم.
من قبلا برای این موارد در کلاس مورد نظر متد distructor را می نوشتم. و درون آن چیزی نمی نوشتم.
آیا همین متد کافی است و تمام فضا رو از حافظه می گیره یا باید درون آن دستورات مربوطه رو نوشت؟
با تشکر
-
تو دات نت اگه با استفاده از managed code برنامه می نویسی(همین کلاسهای معمولی VB یا C#) که باید بگم خود دات نت با استفاده از تکنولوژی Garbage Collector خودش کلاسهایی رو که ارجاعی بهش تو سطح برنامه وجود نداشته باشه حذف میکنه.
ولی اگه خودت بخواهی متد مخرب بسازی باید اینترفیس IDisposable رو پیاده سازی کنی و خودت دات نت رو مجبور کنی که حافظه رو خالی کنه مثال :
کد:
public class ResourceClass : IDisposable
{
private System.ComponentModel.Component managedResource;
private IntPtr unmanagedResource;
protected bool disposed = false;
public ResourceClass()
{
// Insert appropriate constructor code here.
}
protected virtual void Dispose(bool disposing)
{
if (!this.disposed) {
if (disposing) {
managedResource.Dispose();
}
// Add code here to release the unmanaged resource.
unmanagedResource = IntPtr.Zero;
}
// Note that this is not thread safe.
this.disposed = true;
}
public void AnyOtherMethods()
{
if (this.disposed) {
throw new ObjectDisposedException(this.GetType().ToString, "This object has been disposed.");
}
}
#region " IDisposable Support "
// Do not change or add Overridable to these methods.
// Put cleanup code in Dispose(ByVal disposing As Boolean).
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected override void Finalize()
{
Dispose(false);
base.Finalize();
}
#endregion
}