سلام
this.Dispose(); یعنی چی؟
سلام
this.Dispose(); یعنی چی؟
یعنی ای شی یا ابجکت رو به کل نابود بهتر بگم از حافظه پاک و حافظرو آزاد بفرما امین
آخه من دیده بودم که شی ای که از یک کلاس رو ساختیم با dispose اون شی رو از حافظه ram کامپیوتر پاک می کنیم تا مثلاً اگر اون تکه کد 100 بار اجرا می شه به جای 100تا شی از اون کلاس 1 شی داشته باشیم که سرعت کامپیوتر پایین نیاد تا سرعت برنامه پایین نیاد ولی اینکه به جای اسم شی this گذاشتیم برام سواله.
نه دیگه ببین من که گفتم متد Dispose نابود کننده و حافظرو پاک میکنه حالا میگی چرا this بخاطر اینکه نابود سازی یک شی رو به خودش واگذار کرده یعنی مثل این میمونه که میگم اقا کارت تموم شد خودت خودت و پاک کن مثلا یکه کلاس داری یه متد داره که عملیات اصلی تو اون متد تو اون متد تو اخرین خط تو بلاک فینال ترای کشش بسته به نیازت میگی this.dispos برنامه وقتی این متد و اجرا کنه شی پاک میشه
بابا دادش من بهت میگم کارت تموم شد وسایلاتو جمع کن مثال از این بهتر من یکی عمرا استاد بشم
همونطور که دوستان اشاره کردند dispose متدی برای نابودی یا همون ازبین بردن شی هست. تا جایی که من می دونم this به اون کلاسی که داخلش هست اشاره میکنه. حالا این کلاس میتونه فرم باشه یا یک کلاس دیگه باشه. در هر صورت اون رو از بین می بره( حافظه اختصاص داده شده به اون رو از بین می بره)
توی کدی زیر:
ali a = new ali();
a.dispose();
اینجا حافظه ای که به شی a در ram کامپیوتر داده شده پاک میشه.
حالا توی this.dispose(); چه شی ای پاک میشه؟
با اجازه تمام اساتید
کلمه کلیدی this اشاره گری به همان کالاس است
برای مثال فرض کنید کلاسی داریم به نام Soheil و میایم تو یه متد از کلاسم می گیم :
private Void Dis()
{this.Dispose();
}
خوب همانطور که گفتم this داره به کلاس Soheil اشاره می کنه و به هیچ وجه به کلاس های دیگه ربطی نداره
اگه به پست من توجه کرده بودید من اونجا توضیح داده بودم.
واقعاً از دوستان متشکرم.
دقیقاً کجاها باید از Dispose() استفاده کرد؟
1- می خوایم فرم رو ببندیم که به جای this.close(); می نویسیم:
this.Dispose();
2- الان چرا اینجا متد Dispose() نیست؟
3- اینجا هم چرا نیست که داخل کلاسه:
4- چرا کلاسی که من درست کردم متد dispose نداشت ولی کلاس SqlConnection داره؟
SqlConnection con = new SqlConnection();
con.Dispose();
درود
دوست عزیز شما باید برای کلاستون اینترفیس IDisposable را پیاده سازی کنید
کدهایی که باید داخل کلاس بنویسیم برای اینکه متد Dispose رو داشته باشیم چیه؟
می دونم باید کلاس رو اینطوری بنویسیم:
class ali : IDisposable
حالا متد dispose کداش چیه؟
و اگر نخوایم از کلاس اینترفیس IDisposable ارث بری کنه، می تونیم توی برنامه اینطوری بنویسیم؟
کلاسی داریم که کداش اینه:
class ali
{
public void alireza()
{
messagebox.show("test");
}
}
حالا که ما توی این کلاس متد dispose نداریم توی برنامه از using استفاده کنیم همون کار رو انجام می ده؟
using (ali a=new ali())
{
a.alireza();
}
الان اینجوری فضای اشغال شده توسط شی a از حافظه کامپیوتر پاک می شه؟