WEBVTT

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

00:01.190 --> 00:05.720
در این ویدیو، به قالب دیگری که وجود دارد نگاه خواهیم کرد.

00:05.720 --> 00:07.010
منظورم از این چیست؟

00:07.010 --> 00:09.350
بیایید یک پروژه جدید ایجاد کنیم.

00:09.350 --> 00:14.210
زیرا ما از پروژه پیش‌فرض قبلی استفاده نکرده‌ایم.

00:14.210 --> 00:17.750
می‌خواهم این پروژه را old style بنامم.

00:17.750 --> 00:20.810
پس بیایید به مرحله بعد برویم.

00:20.810 --> 00:24.950
"do not use top level statements" و اینجا گزینه 
 را انتخاب می‌کنیم.

00:24.950 --> 00:31.070
main اگر موس را روی آن ببرید، خواهید دید که آیا می‌خواهد یک برنامه صریح، کلاس و متد 
 ایجاد کند

00:31.070 --> 00:32.930
top level statements. به جای استفاده از 

00:32.930 --> 00:40.010
top level statements ما همیشه از 
 استفاده می‌کردیم، و دلیل آن این است که این کار را بسیار آسان‌تر می‌کند.

00:40.010 --> 00:45.140
این باعث می‌شود که شما مستقیماً وارد کد شوید و نیازی به تمام این کد اضافی نداشته باشید.

00:45.140 --> 00:53.060
حالا، استفاده نکردن از top level statements چیزی است که تازه با دات‌نت ۶ وارد شده است.

00:53.060 --> 00:55.280
نه خیلی تازه، اما فقط چند سال پیش.

00:55.280 --> 00:59.750
و بسیاری از ویدیوهایی که در گذشته ضبط شده‌اند، هنوز هم ویدیوهای عالی هستند، و من واقعاً خوشحالم

00:59.750 --> 01:00.140
در مورد آن‌ها.

01:00.140 --> 01:01.100
دانش‌آموزان آن‌ها را دوست دارند.

01:01.100 --> 01:06.140
Top Level Statements آن‌ها با دات‌نت ۵ ضبط شده بودند و از 
 استفاده نمی‌کردند.

01:06.140 --> 01:07.250
این یعنی چه؟

01:07.250 --> 01:11.510
خب، این یعنی برنامه به این شکل به نظر می‌رسید.

01:11.510 --> 01:17.990
Console.WriteLine پس به جای اینکه فقط این دستور 
 را داشته باشیم، برنامه دقیقاً همان چیزی بود که

01:17.990 --> 01:19.220
می تونید ببینید

01:19.220 --> 01:25.280
پس بیایید قبل از رفتن به ویدیوهای بعدی، کل این بخش را بررسی کنیم.

01:25.280 --> 01:32.360
چون من می‌خواهم شما قادر باشید بفهمید که چه اتفاقی در اینجا می‌افتد و اساساً تمام دانش خود را

01:32.360 --> 01:34.850
فقط روی این سبک دیگر اعمال کنید.

01:34.850 --> 01:39.230
در واقع چیز عجیب و غریبی در اینجا رخ نمی‌دهد، اما هنوز چند کلیدواژه وجود دارد که شما باید

01:39.230 --> 01:40.190
آن‌ها را درک کنید.

01:40.190 --> 01:47.090
اول از همه، ما این کلیدواژه namespace را داریم و namespace در C# برای سازماندهی کد استفاده می‌شود،

01:47.090 --> 01:53.000
و اساساً راهی است برای گروه‌بندی کلاس‌ها یا نوع‌های مرتبط دیگر تحت یک نام یکتا.

01:53.000 --> 01:58.250
می‌توانید آن را به عنوان یک پوشه در کامپیوتر خود تصور کنید که به شما کمک می‌کند فایل‌ها را سازماندهی کنید.

01:58.250 --> 02:01.250
OldStyle نام namespace است.

02:01.250 --> 02:05.600
namespace تمام کدی که بخشی از این 
 است، درون آکولادها قرار می‌گیرد.

02:05.600 --> 02:07.220
این چیزی است که اینجا می‌بینید.

02:07.220 --> 02:11.090
internal class Program  سپس این 
را داریم.

02:11.090 --> 02:13.640
Program فقط نام کلاس ما است.

02:13.640 --> 02:18.470
در مورد کلاس‌ها چیزهای بیشتری برای صحبت وجود دارد که نمی‌توانم فقط در این مرور سریع توضیح دهم.

02:18.470 --> 02:23.180
است.Program.cs  اما هنوز، این فقط نام فایل ما یعنی 

02:23.180 --> 02:29.990
class و ما این کلیدواژه 
 را داریم، که یک کلیدواژه است که به سی شارپ می‌گوید شما در حال تعریف .

02:29.990 --> 02:30.560
یک کلاس هستید

02:30.560 --> 02:34.550
و یک کلاس مانند یک نقشه‌ی راه است که از آن اشیاء ایجاد می‌شوند.

02:34.550 --> 02:38.660
کلاس می‌تواند داده‌ها و متدهایی برای کار با آن داده‌ها را در خود نگه دارد.

02:38.660 --> 02:44.030
پس در اینجا یک متد وجود دارد و ما می‌توانیم متدهای بیشتری در داخل این کلاس ایجاد کنیم.

02:44.030 --> 02:45.560
اما در مورد آن بعداً بیشتر صحبت خواهیم کرد.

02:45.560 --> 02:51.290
internal سپس این کلمه‌ی کلیدی 
 را داریم، و این یک دسترسی‌دهنده  است که مشخص می‌کند این کلاس

02:51.290 --> 02:54.020
فقط در همان اسمبلی قابل دسترسی است.

02:54.020 --> 02:59.630
assembly به یک 
 فکر کنید مانند یک مجموعه از کد و داده‌ها در یک واحد واحد، مانند یک بسته.

02:59.630 --> 03:05.840
این از سایر assemblyها قابل دسترسی نیست، بنابراین این فقط به این معناست که کلاس Program

03:05.840 --> 03:09.950
فقط برای کلاس‌های دیگر داخل namespace ما به نام OldStyle در دسترس خواهد بود.

03:09.950 --> 03:16.910
internal  ما قصد داریم بیشتر درباره این موضوع و سایر کلیدواژه‌هایی که علاوه بر کلیدواژه 
وجود دارند یاد بگیریم،

03:16.910 --> 03:19.970
اما در این مرحله فقط آن را بپذیرید.

03:19.970 --> 03:22.100
بعداً، این موضوع خیلی بیشتر قابل درک خواهد بود.

03:22.100 --> 03:27.110
چند کلیدواژه دیگر هم وجود دارد که می‌خواهم درباره آن‌ها صحبت کنم، اما چیزی که می‌بینید این است که ما

03:27.110 --> 03:33.020
Program این کلاس به نام را ایجاد می‌کنیم و سپس داخل براکت‌های { }، محتوای کلاس 

03:33.020 --> 03:33.590
قرار دارد.

03:33.590 --> 03:37.520
پس هر چیزی که داخل این براکت‌های { } باشد، بخشی از برنامه ما محسوب می‌شود.

03:37.520 --> 03:38.240
باشه.

03:38.240 --> 03:43.460
داخل این کلاس Program، می‌بینید که ما یک متد داریم به نام static void Main.

03:43.460 --> 03:45.410
آشنا شده‌اید.void قبلاً با 

03:45.410 --> 03:48.440
وvoid   
نوع بازگشتی است که هیچ چیزی برنمی‌گرداند.

03:48.440 --> 03:48.710
درسته.

03:48.710 --> 03:50.090
قبلاً این را دیده‌ایم.

03:50.090 --> 03:51.620
و این یک متد است.

03:51.620 --> 03:53.750
پس این متد main نام دارد.

03:53.750 --> 03:58.310
و می‌توانید ببینید که در داخل پرانتزها پارامترهایی می‌پذیرد.

03:58.310 --> 04:03.560
args حالا می‌گوید که می‌خواهد یک آرایه از رشته‌ها به نام 
 داشته باشد.

04:03.560 --> 04:10.400
main  این فقط به این معناست که می‌توانید آرگومان‌هایی به متد 
خود قبل از اجرای کارش ارسال کنید.

04:10.400 --> 04:14.000
این هم چیزی است که در این مرحله از دوره به طور کامل نیازی به درک آن ندارید.

04:14.000 --> 04:16.940
ما بعداً دقیقاً توضیح خواهیم داد که این چه معنایی دارد.

04:16.940 --> 04:19.580
static با این حال، این یک کلمه کلیدی به نام 
 وجود دارد.

04:19.580 --> 04:25.160
staticو 
 به این معناست که این متد متعلق به خود کلاس است و نه به هیچ نمونه‌ای از کلاس.

04:25.160 --> 04:28.460
بنابراین نیازی به ایجاد یک شیء از کلاس برای استفاده از این متد ندارید.

04:28.460 --> 04:31.310
می‌توانید مستقیماً آن را روی کلاس فراخوانی کنید.

04:31.310 --> 04:33.350
پس این چیست؟

04:33.350 --> 04:41.540
 main این فقط به این معناست که می‌توانیم این متد
 را بدون نیاز به فراخوانی دستی و.

04:41.540 --> 04:43.880
اجرا کنیمProgram بدون نیاز به ایجاد یک شیء از کلاس

04:43.880 --> 04:47.810
پس این فقط کار را برای ما راحت‌تر می‌کند تا بتوانیم برای حالا شروع کنیم.

04:47.810 --> 04:53.990
 internal و static به جز اینکه وقتی از این قالب استفاده می‌کنید، این کلیدواژه‌های
 را خواهید داشت که

04:53.990 --> 04:58.250
وقتی برنامه‌نویسی شیء‌گرا را واقعاً بفهمیم، خیلی بیشتر معنا پیدا خواهند کرد.

04:58.250 --> 04:59.870
و این فقط همین است.

05:00.080 --> 05:03.110
ساختار قالب قدیمی به این شکل است.

05:03.110 --> 05:07.880
اما هر زمان که از این قالب قدیمی استفاده می‌کنید، این همچنین انعطاف‌پذیری و آزادی بیشتری .

05:07.880 --> 05:08.660
به شما می‌دهد

05:08.690 --> 05:11.720
حالا موضوع این است که ما این چیزی داریم به نام

05:11.720 --> 05:13.220
Console.WriteLine.

05:13.220 --> 05:13.910
Hello World.

05:13.910 --> 05:17.420
این خط چیزی است که قبلاً دیده‌ایم و کاملاً ساده است.

05:17.420 --> 05:23.600
در اصل، تمام کدی که قبلاً اجرا کردیم درون همان کروشه‌ها قرار داشت.

05:23.600 --> 05:30.740
main راستی، متد 
 فقط نقطه‌ی ورود به نرم‌افزار ما است.

05:30.740 --> 05:37.970
main این فقط به این معنا است که هر زمان روی دکمه‌ی اجرا کلیک کنیم، متد 
 اجرا خواهد شد.

05:37.970 --> 05:39.410
این نقطه‌ی شروع است.

05:39.410 --> 05:41.030
نام بسیار خاصی دارد.

05:41.030 --> 05:42.200
است.main نام آن 
 
05:42.410 --> 05:46.880
این نام بسیار ویژه‌ای برای یک متد است، به همین دلیل به شکل متفاوتی رفتار می‌شود.

05:46.880 --> 05:53.030
می‌گرددmain پس واقعاً وقتی برنامه‌ی خود را اجرا می‌کنید، ابتدا به دنبال متد 

05:53.030 --> 05:56.210
و سپس هر چیزی که داخل آن است را اجرا خواهد کرد.

05:56.210 --> 06:01.940
پس اگر کدی خارج از متد main باشد، اما هیچ‌وقت داخل متد main فراخوانی نشود،

06:01.940 --> 06:03.650
اجرایی نخواهد شد.

06:03.650 --> 06:04.880
اجازه دهید منظورم را نشان دهم.

06:04.880 --> 06:09.020
پس اگر حالا این کد را کپی کنم و اینجا بچسبانم، می‌بینید که یک خطا دریافت می‌کنم.

06:09.020 --> 06:14.150
WriteLine می‌گوید نام 
 در زمینه‌ی فعلی وجود ندارد، پس اجرا نخواهد شد.

06:14.150 --> 06:16.100
هیچ کاری انجام نخواهد داد.

06:16.100 --> 06:22.370
بنابراین باید داخل متد main باشد، یا از متد main فراخوانی شود، یا از چیزی که از متد main فراخوانی می‌شود.

06:22.370 --> 06:25.790
ما بعداً به این موضوع بیشتر می‌پردازیم، اما فعلاً بیایید عمیق‌تر نگاه کنیم که این متد main

06:25.790 --> 06:33.350
در واقع چه کاری برای ما انجام می‌دهد.

06:33.350 --> 06:37.070
اما دوباره، این نقطه‌ی شروع برنامه‌ی ما است.

06:37.070 --> 06:43.460
پس اگر به هر یک از پروژه‌های دیگرمان نگاه کنیم، تمام کدی که داشتیم در اینجا بود و اساساً

06:43.460 --> 06:45.680
همان جایی بود که کل این کد قرار داشت.

06:45.680 --> 06:47.540
پس اجازه دهید این خط را حذف کنم.

06:47.540 --> 06:51.650
تمام این کد برای ما مخفی بود و ما اینجا بودیم.

06:51.650 --> 06:55.370
پس شما اینجا هستید، درست مثل روی نقشه، درست است؟

06:55.370 --> 07:02.450
پس تمام پروژه‌هایی که در چند مثال اخیر ساخته‌ایم، همگی داخل اینجا بودند.

07:02.450 --> 07:04.610
بگذارید نشان دهم این به چه معناست.

07:04.610 --> 07:06.680
پس الان دو پروژه دارم.

07:07.040 --> 07:11.090
این پروژه قدیمی به سبک قدیمی است، با عبارات سطح بالا.

07:11.090 --> 07:14.630
و این پروژه بدون عبارات سطح بالا است، پروژه متدهای ما.

07:14.840 --> 07:15.410
باشه.

07:15.410 --> 07:21.710
پس این پروژه متدها تمام این کدها، این متغیرها و این متدها را دارد.

07:21.710 --> 07:28.820
همه این‌ها را دارد، در واقع اجازه دهید این همه چیز را بیرون بیاورم و اینجا قرار دهم.

07:28.820 --> 07:30.800
همان چیز است.

07:30.800 --> 07:39.680
پس این کد همان کدی است که در جلسه قبلی داشتیم، آن جلسه درباره متدها، پارامترها و نوع بازگشتی بود.

07:39.680 --> 07:40.340
باشه.

07:40.340 --> 07:45.920
و اکنون همان چیز است، اما ما چیزهای دیگر را هم می‌بینیم.

07:45.920 --> 07:52.700
قبلاً نمی‌دیدیم که داخل یک دره بودیم، اما تمام مدت کارمان را داخل آن دره انجام می‌دادیم.

07:52.700 --> 07:53.090
باشه.

07:53.090 --> 07:57.950
اما نمی‌دانستیم که بیرون از آن دره کوه‌ها و چیزهای دیگر زیادی وجود دارد، کل جهان به نوعی.

07:57.950 --> 08:01.640
و ما فقط در این دره کار خود را انجام می‌دادیم و در آن دره امن بودیم و راحت بود.

08:01.640 --> 08:06.950
اما اکنون از آن دره خارج می‌شویم و می‌بینیم، اوه، در واقع چیزهای بیشتری وجود دارد.

08:06.950 --> 08:10.700
و این یک مثال بسیار ساده از آنچه در جریان است.

08:10.700 --> 08:13.970
اما بله، در واقع اکنون هر زمان که از کد خود استفاده می‌کنیم، به جای استفاده از سبک قبلی

08:13.970 --> 08:21.080
که از عبارات سطح بالا استفاده نمی‌کردیم، اکنون فقط عبارات سطح بالا را داریم، اما

08:21.080 --> 08:28.280
تمام کد ما داخل متد main قرار خواهد گرفت.

08:28.280 --> 08:31.610
پس ما این متد به نام main داریم.

08:31.610 --> 08:33.830
و تمام کد ما داخل آن قرار خواهد گرفت.

08:33.830 --> 08:36.890
اکنون می‌توانید آن را کوچک کنید.

08:36.890 --> 08:38.390
می‌بینید که کوچکتر می‌شود.

08:38.390 --> 08:40.670
اما بله، در واقع همین است.

08:40.670 --> 08:43.070
پس هیچ چیز تغییر نمی‌کند.

08:43.070 --> 08:44.780
تنها چیزی که متفاوت است این است که اکنون کد ما داخل متد main خواهد بود و ما فقط از آنجا کار می‌کنیم.

08:44.780 --> 08:51.050
باشه.

08:51.050 --> 08:51.740
پس همین بود برای این ویدیو.

08:51.740 --> 08:52.310
در ویدیوی بعد می‌بینمتان.
