PDA

View Full Version : کپسوله کردن متغیرها در کلاس



ebrahim.rayatparvar
سه شنبه 20 مرداد 1394, 10:57 صبح
سلام خدمت دوستای خوبم.
سوالی برام پیش امده که برام گنگه. فرق بین این کد :


Public int Code
{
set{;}
get{;}
}


با این کد در چیه؟؟


private int _code;

public int Code
{
set{_code=value;}
get{return _code;}
}


تو روش دومی خوب یه متغیر در کلاس داریم که کپسوله شده و به طور مستفیم بهش دسترسی نداریم ولی روش اول چطور کپسوله میکنه؟؟ چون تو برنامه باید از خود نام proprty استفاده کنیم.

مرسی دوستان

alireza264
سه شنبه 20 مرداد 1394, 14:02 عصر
سلام
به مدل اولauto-implemented property گفته میشه و این syntax به کامپایلر می‌فهماند که باید یک storage location (محل ذخیره‌سازی که به آن backing field هم گفته می‌شود) برای نگه‌داری مقدار مورد نظر بسازه. این متغیر (backing field) دارای اسم نبوده و مستقیماً برای شما قابل دسترس نیست و تنها می‌توانید از طریق property به آن دسترسی داشته باشید
اما در روش دوم شما توانایی مدیریت روی داده رو هم دارید
set accessor به‌طور اتوماتیک یک پارامتر به اسم value دریافت می‌کند که شامل مقداری است که به property اختصاص داده می‌شود. ولی باید توجه داشت که property ها storage location (محل ذخیره‌سازی) را تعریف نکرده و درواقع دسترسی به یک فیلد را مدریت می‌کنند.




private int _code;

public int Code
{
set{
if(value > 0) _code=value ;
else {
_code=value * -2 ;
}

}
get{
return _code;
}
}

ebrahim.rayatparvar
سه شنبه 20 مرداد 1394, 17:27 عصر
مرسی مهندس جان بسیار عالی