خوش اومدید دوباره.
propertyتوی ویدیوی بعدی قراره از backing field‌هایی استفاده کنیم که ندارن.
می‌خوام متوجه بشید این یعنی چی، کی باید ازش استفاده کرد و کی نباید.
اوکی.
propertyاینجا توی کلاس سه تا Model، Brand و IsLuxury داریم.
درسته.
داریم.propertyپس سه تا
privateو همچنین برای هر کدومشون یک متغیر هم ساختیم.
و داریم از اون‌ها استفاده می‌کنیم.
backing field به این متغیرها می‌گن .
property Model برای backing fieldپس این میشه
و این هم backing field برای property Brand.
backing fieldاما بعضی وقت‌ها میشه بدون هم کار رو پیش برد،
استفاده کرد. propertyیعنی فقط از خود
این وقتی ممکنه که نخوایم مشخص کنیم دقیقاً چه اتفاقی بیفته وقتی property می‌کنیم.
رو get یا set
خب این یعنی چی؟
بیاید یه مثال ببینیم.
property داریم از یک Modelاینجا برای پیش‌فرض استفاده می‌کنیم.
میشه چه بشه.getیعنی تعریف نکردیم وقتی
setو همینطور برای هم هیچ چیز خاصی تعیین نکردیم.
فرق می‌کنه. Brandولی برای
اینجا ما دستورهای خاص گذاشتیم Brand برای وقتی کسی خواست مقدار رو بخونه یا تغییر بده.
backing fieldبرای همین نیاز داشتیم یک داشته باشیم.
یعنی همون متغیر underscoreBrand.
اوکی.
پس برای Model می‌تونستیم اصلاً backing field نسازیم.
البته اگه این خط کد رو حذف کنیم ممکنه خطا بده.
ولی بذارید سریع نشون بدم اگه property رو بدون setter و getter سفارشی تعریف کنیم چه شکلی میشه.
می‌بینید، مثل این.
string Model { get; set; } و این دیگه بدون .
اون خط کار می‌کنه
این میشه getter و setter پیش‌فرض.
و ما چیزی رو بازنویسی نکردیم.
set پس دیگه لازم نیست دستی کنیم یا چیز خاصی انجام بدیم.
propertyفقط یک داریم که می‌تونه داده نگه داره.
این متغیر Model هم default get داره هم default set.
یعنی دقیقاً مثل یک متغیر عادی رفتار می‌کنه.
getما نگفتیم موقع شدن چه تغییری بشه.
setو نگفتیم موقع شدن چه اتفاقی بیفته.
این کار رو کردیم.Brandاما برای
اونجا مشخص کردیم موقع خواندن یا تغییر دادن مقدار چه اتفاقی بیفته.
Modelولی برای این کار رو نکردیم، پس نیازی به متغیر خصوصی براش نبود.
می‌تونستیم فقط property داشته باشیم بدون backing field.
خب مزیتش چیه؟
سادگی.
کدت کمتر میشه و کلاس ساده‌تر و خواناتر میشه.
هم گفت. IsLuxuryحالا همین رو میشه درباره
چون اون هم فقط مقدار رو می‌گیره و ست می‌کنه.
propertyپس اون هم می‌تونست به شکل یک ساده تعریف بشه.
prop bool IsLuxury { get; set; }مثلاً و دیگه این خط اضافی لازم نبود.
البته باید مطمئن بشیم وقتی ازش استفاده می‌کنیم،
داریم property رو چک می‌کنیم نه backing field.
خب، پس اصل موضوع اینه:
وقتی نمی‌خواید setter یا getter رو خودتون بازنویسی کنید، نیازی به backing field ندارید.
اینطوری زمان صرفه‌جویی میشه.
ولی اگه خواستید خودتون مشخص کنید چه اتفاقی بیفته، باید از استفاده کنید. backing field
مثل همون Brand.
دیگه لازم نیست.IsLuxuryولی برای
می‌خواستیم کنترل کامل داشته باشیم. Brandچون برای
اوکی.
این کار در کل باعث میشه کار ساده‌تر بشه.
چون لازم نیست همیشه برای هر property یک backing field خصوصی بسازیم.
فقط وقتی لازم شد ازش استفاده می‌کنیم.
اوکی.
این رو گفتم که آماده باشید چون توی ویدیوی بعدی قراره فقط از propertyهای ساده بدون backing field استفاده کنیم.
این هم مثالی از چیزی که خواهیم داشت.
فقط می‌خواستم مطمئن شم این موضوع رو درک کرده باشید.
و خب، همین برای این ویدیو.
تا ویدیوی بعدی می‌بینمتون.