WEBVTT

00:00.140 --> 00:00.980
خوش اومدید دوباره.  

00:00.980 --> 00:05.720
propertyتوی ویدیوی بعدی قراره از 
backing field‌هایی استفاده کنیم که 
 ندارن.  

00:05.720 --> 00:12.470
می‌خوام متوجه بشید این یعنی چی، کی باید ازش استفاده کرد و کی نباید.  

00:12.470 --> 00:13.100
اوکی.  

00:13.100 --> 00:21.890
propertyاینجا توی کلاس   سه تا
  Model، Brand و IsLuxury داریم.  

00:21.890 --> 00:22.340
درسته.  

00:22.340 --> 00:25.160
داریم.propertyپس سه تا   

00:25.160 --> 00:31.550
privateو همچنین برای هر کدومشون یک متغیر 
 هم ساختیم.  

00:31.550 --> 00:33.650
و داریم از اون‌ها استفاده می‌کنیم.  

00:33.650 --> 00:38.240
backing field به این متغیرها می‌گن .  

00:38.240 --> 00:42.560
property Model برای backing fieldپس این میشه  

00:42.560 --> 00:45.980
و این هم backing field برای property Brand.  

00:45.980 --> 00:51.410
 backing fieldاما بعضی وقت‌ها میشه بدون 
 هم کار رو پیش برد،  

00:51.410 --> 00:54.680
استفاده کرد. propertyیعنی فقط از خود  

00:54.680 --> 01:01.700
این وقتی ممکنه که نخوایم مشخص کنیم دقیقاً چه اتفاقی بیفته وقتی property  می‌کنیم.  

01:01.700 --> 01:03.260
رو get یا set

01:03.260 --> 01:04.250
خب این یعنی چی؟  

01:03.260 --> 01:05.690
بیاید یه مثال ببینیم.  

01:05.690 --> 01:11.510
property داریم از یک Modelاینجا برای 
 پیش‌فرض استفاده می‌کنیم.  

01:11.510 --> 01:15.860
میشه چه بشه.getیعنی تعریف نکردیم وقتی 
   
01:15.860 --> 01:21.320
setو همینطور برای 
 هم هیچ چیز خاصی تعیین نکردیم.  

01:21.320 --> 01:23.540
فرق می‌کنه. Brandولی برای 
  
01:23.540 --> 01:29.390
اینجا ما دستورهای خاص گذاشتیم 
Brand برای وقتی کسی خواست مقدار 
 رو بخونه یا تغییر بده.  

01:29.390 --> 01:32.690
backing fieldبرای همین نیاز داشتیم یک 
 داشته باشیم.  

01:32.690 --> 01:38.810
یعنی همون متغیر underscoreBrand.  

01:38.810 --> 01:39.560
اوکی.  

01:39.560 --> 01:44.840
پس برای Model می‌تونستیم اصلاً backing field نسازیم.  

01:44.840 --> 01:47.240
البته اگه این خط کد رو حذف کنیم ممکنه خطا بده.  

01:47.240 --> 01:53.630
ولی بذارید سریع نشون بدم اگه property رو بدون setter و getter سفارشی تعریف کنیم چه شکلی میشه.  

01:53.630 --> 01:55.280
می‌بینید، مثل این.  

01:55.280 --> 02:02.240
string Model { get; set; } 
و این دیگه بدون .  

02:02.240 --> 02:03.410
اون خط کار می‌کنه

02:03.410 --> 02:05.570
این میشه getter و setter پیش‌فرض.  

02:05.570 --> 02:11.210
و ما چیزی رو بازنویسی نکردیم.   

02:11.210 --> 02:12.980
set  پس دیگه لازم نیست دستی 
کنیم یا چیز خاصی انجام بدیم. 

02:12.980 --> 02:13.970
propertyفقط یک 
 داریم که می‌تونه داده نگه داره.  

02:13.970 --> 02:18.050
این متغیر Model هم default get داره هم default set.  

02:18.050 --> 02:23.900
یعنی دقیقاً مثل یک متغیر عادی رفتار می‌کنه.  

02:23.900 --> 02:28.820
getما نگفتیم موقع 
 شدن چه تغییری بشه.  

02:28.820 --> 02:34.580
setو نگفتیم موقع 
 شدن چه اتفاقی بیفته.  

02:34.580 --> 02:38.330
این کار رو کردیم.Brandاما برای 
   
02:38.330 --> 02:46.790
اونجا مشخص کردیم موقع خواندن یا تغییر دادن مقدار چه اتفاقی بیفته.  

02:46.790 --> 02:55.550
Modelولی برای 
 این کار رو نکردیم، پس نیازی به متغیر خصوصی براش نبود.  

02:55.550 --> 03:03.440
می‌تونستیم فقط property داشته باشیم بدون backing field.  

03:03.440 --> 03:06.650
خب مزیتش چیه؟  

03:06.650 --> 03:08.810
سادگی.  

03:08.810 --> 03:14.930
کدت کمتر میشه و کلاس ساده‌تر و خواناتر میشه.  

03:14.930 --> 03:18.620
هم گفت.  IsLuxuryحالا همین رو میشه درباره 

03:18.620 --> 03:21.860
چون اون هم فقط مقدار رو می‌گیره و ست می‌کنه.  

03:21.860 --> 03:26.510
propertyپس اون هم می‌تونست به شکل یک 
 ساده تعریف بشه.  

03:26.510 --> 03:35.900
prop bool IsLuxury { get; set; }مثلاً 
 و دیگه این خط اضافی لازم نبود.  

03:35.900 --> 03:37.190
البته باید مطمئن بشیم وقتی ازش استفاده می‌کنیم،  

03:37.190 --> 03:45.800
داریم property رو چک می‌کنیم نه backing field.  

03:45.800 --> 03:50.450
خب، پس اصل موضوع اینه:  

03:50.450 --> 04:01.490
وقتی نمی‌خواید setter یا getter رو خودتون بازنویسی کنید، نیازی به backing field ندارید.  

04:01.490 --> 04:07.040
اینطوری زمان صرفه‌جویی میشه.  

04:07.040 --> 04:13.490
ولی اگه خواستید خودتون مشخص کنید چه اتفاقی بیفته، باید از  استفاده کنید.  backing field

04:13.490 --> 04:14.330
مثل همون Brand.  

04:14.330 --> 04:18.440
دیگه لازم نیست.IsLuxuryولی برای 
   
04:18.440 --> 04:25.670
می‌خواستیم کنترل کامل داشته باشیم. Brandچون برای  

04:25.670 --> 04:28.010
اوکی.  

04:28.010 --> 04:32.360
این کار در کل باعث میشه کار ساده‌تر بشه.  

04:32.360 --> 04:38.930
چون لازم نیست همیشه برای هر property یک backing field خصوصی بسازیم.  

04:38.930 --> 04:42.710
فقط وقتی لازم شد ازش استفاده می‌کنیم.  

04:42.710 --> 04:43.250
اوکی.  

04:43.250 --> 04:50.390
این رو گفتم که آماده باشید چون توی ویدیوی بعدی قراره فقط از propertyهای ساده بدون backing field استفاده کنیم.  

04:50.390 --> 04:52.640
این هم مثالی از چیزی که خواهیم داشت.  

04:52.640 --> 04:55.700
فقط می‌خواستم مطمئن شم این موضوع رو درک کرده باشید.  

04:55.700 --> 04:59.840
و خب، همین برای این ویدیو.  

05:00.050 --> 05:00.770
تا ویدیوی بعدی می‌بینمتون.  
