WEBVTT

00:00.110 --> 00:00.920
خوش برگشتید.  

00:00.920 --> 00:06.500
در این ویدئو می‌خوام سریع نشون بدم که چیزی به اسم پراپرتی محاسبه‌ای هم وجود داره.  

00:06.530 --> 00:08.480
حالا پراپرتی محاسبه‌ای چیه؟  

00:08.510 --> 00:13.130
پراپرتی محاسبه‌ای پراپرتیه که بر اساس مقدارهای پراپرتی‌های دیگه محاسبه میشه.  

00:13.130 --> 00:20.810
پس خودش مقداری ذخیره نمی‌کنه، همیشه به پراپرتی‌های دیگه وابسته‌ست.  

00:20.810 --> 00:25.880
اینجا مساحت همیشه میشه عرض ضربدر ارتفاع.  

00:25.880 --> 00:32.030
پس هر وقت بخوای مساحت رو بگیری، برمی‌گردونه عرض ضربدر ارتفاع.  

00:32.030 --> 00:38.600
setنمی‌تونی مساحت رو 
چه اتفاقی بیفته.  set کنی چون تعریف نکردیم موقع  شدن

00:38.600 --> 00:43.850
بیا ببینیم وقتی واقعاً داریم به مساحت دسترسی پیدا می‌کنیم چه شکلی میشه.  

00:43.850 --> 00:47.000
لازم نیست از همین کد استفاده کنی.  

00:47.000 --> 00:48.920
لازم نیست دقیقاً اینو بنویسی.  

00:48.920 --> 00:54.470
فقط می‌خواستم سریع نشون بدم چیزی به اسم پراپرتی محاسبه‌ای وجود داره.  

00:54.470 --> 01:03.110
حالا فرض کن یه مستطیل R1 بسازیم که مساوی باشه با یه مستطیل جدید.  

01:03.110 --> 01:03.560
خب.  

01:03.560 --> 01:14.390
حالا می‌تونم R1.width رو برابر ۵ بذارم و R1.height رو هم ۵.  

01:14.390 --> 01:23.810
Console.WriteLineبعد با 
R1 میگم مساحت 
 برابر هست با و بعد مقدار مساحت.  

01:23.810 --> 01:26.930
یعنی R1.area.  

01:26.930 --> 01:33.230
R1حالا اجرا کنیم، می‌بینیم مساحت 
 میشه ۲۵.  

01:33.230 --> 01:36.650
حالا اگه بخوام مستقیم مساحت رو تغییر بدم.  

01:36.650 --> 01:40.850
R1.areaمثلاً 
 مساوی ۵.  

01:40.850 --> 01:48.020
setterمی‌بینی که کار نمی‌کنه چون هیچ 
 براش تعریف نکردیم.  

01:48.020 --> 01:53.360
پس خطا میده: این پراپرتی فقط خوندنیه.  

01:53.360 --> 01:59.930
یعنی در واقع این میشه read-only چون فقط getter داره.  

02:00.050 --> 02:02.030
setter نداره.  

02:02.030 --> 02:07.880
getterپس اگه فقط 
 داشته باشی، پراپرتی فقط خوندنی میشه.  

02:07.880 --> 02:10.670
یعنی read-only.  

02:10.700 --> 02:16.520
و اگه فقط setter داشته باشی، میشه write-only.  

02:16.520 --> 02:21.860
خب، این مثالیه از یه پراپرتی فقط خوندنی که همزمان محاسبه‌ای هم هست.  

02:21.860 --> 02:24.110
که خودش مقداری ذخیره نمی‌کنه.  

02:24.110 --> 02:29.060
هر وقت بهش دسترسی پیدا می‌کنی، یه مقدار بهت برمی‌گردونه.  

02:29.060 --> 02:30.770
چطوری مقدار رو میده؟  

02:30.770 --> 02:38.270
با انجام محاسبه بر اساس مقدارهای دیگه یا پراپرتی‌های دیگه‌ای که داری.  

02:38.900 --> 02:41.510
پس این یه مثال از پراپرتی محاسبه‌ای بود.  

02:41.510 --> 02:50.240
constructorراستی، می‌بینی که حتی 
 هم برای مستطیل تعریف نکردیم.  

02:50.240 --> 02:55.790
constructorچون به صورت پیش‌فرض 
 خالی در نظر گرفته میشه.  

02:55.790 --> 03:03.350
پس می‌بینی می‌تونیم یه مستطیل جدید بسازیم بدون اینکه constructor بنویسیم.  

03:03.380 --> 03:04.100
اونم جواب میده.  

03:04.100 --> 03:06.800
خب، همین برای این ویدئو کافیه.  

03:06.800 --> 03:07.910
تو ویدئوی بعد می‌بینمت.  
