خوش برگشتید.
در این ویدیو، به قالب دیگری که وجود دارد نگاه خواهیم کرد.
منظورم از این چیست؟
بیایید یک پروژه جدید ایجاد کنیم.
زیرا ما از پروژه پیش‌فرض قبلی استفاده نکرده‌ایم.
می‌خواهم این پروژه را old style بنامم.
پس بیایید به مرحله بعد برویم.
"do not use top level statements" و اینجا گزینه را انتخاب می‌کنیم.
main اگر موس را روی آن ببرید، خواهید دید که آیا می‌خواهد یک برنامه صریح، کلاس و متد ایجاد کند
top level statements. به جای استفاده از
top level statements ما همیشه از استفاده می‌کردیم، و دلیل آن این است که این کار را بسیار آسان‌تر می‌کند.
این باعث می‌شود که شما مستقیماً وارد کد شوید و نیازی به تمام این کد اضافی نداشته باشید.
حالا، استفاده نکردن از top level statements چیزی است که تازه با دات‌نت ۶ وارد شده است.
نه خیلی تازه، اما فقط چند سال پیش.
و بسیاری از ویدیوهایی که در گذشته ضبط شده‌اند، هنوز هم ویدیوهای عالی هستند، و من واقعاً خوشحالم
در مورد آن‌ها.
دانش‌آموزان آن‌ها را دوست دارند.
Top Level Statements آن‌ها با دات‌نت ۵ ضبط شده بودند و از استفاده نمی‌کردند.
این یعنی چه؟
خب، این یعنی برنامه به این شکل به نظر می‌رسید.
Console.WriteLine پس به جای اینکه فقط این دستور را داشته باشیم، برنامه دقیقاً همان چیزی بود که
می تونید ببینید
پس بیایید قبل از رفتن به ویدیوهای بعدی، کل این بخش را بررسی کنیم.
چون من می‌خواهم شما قادر باشید بفهمید که چه اتفاقی در اینجا می‌افتد و اساساً تمام دانش خود را
فقط روی این سبک دیگر اعمال کنید.
در واقع چیز عجیب و غریبی در اینجا رخ نمی‌دهد، اما هنوز چند کلیدواژه وجود دارد که شما باید
آن‌ها را درک کنید.
اول از همه، ما این کلیدواژه namespace را داریم و namespace در C# برای سازماندهی کد استفاده می‌شود،
و اساساً راهی است برای گروه‌بندی کلاس‌ها یا نوع‌های مرتبط دیگر تحت یک نام یکتا.
می‌توانید آن را به عنوان یک پوشه در کامپیوتر خود تصور کنید که به شما کمک می‌کند فایل‌ها را سازماندهی کنید.
OldStyle نام namespace است.
namespace تمام کدی که بخشی از این است، درون آکولادها قرار می‌گیرد.
این چیزی است که اینجا می‌بینید.
internal class Program سپس این را داریم.
Program فقط نام کلاس ما است.
در مورد کلاس‌ها چیزهای بیشتری برای صحبت وجود دارد که نمی‌توانم فقط در این مرور سریع توضیح دهم.
است.Program.cs اما هنوز، این فقط نام فایل ما یعنی
class و ما این کلیدواژه را داریم، که یک کلیدواژه است که به سی شارپ می‌گوید شما در حال تعریف .
یک کلاس هستید
و یک کلاس مانند یک نقشه‌ی راه است که از آن اشیاء ایجاد می‌شوند.
کلاس می‌تواند داده‌ها و متدهایی برای کار با آن داده‌ها را در خود نگه دارد.
پس در اینجا یک متد وجود دارد و ما می‌توانیم متدهای بیشتری در داخل این کلاس ایجاد کنیم.
اما در مورد آن بعداً بیشتر صحبت خواهیم کرد.
internal سپس این کلمه‌ی کلیدی را داریم، و این یک دسترسی‌دهنده است که مشخص می‌کند این کلاس
فقط در همان اسمبلی قابل دسترسی است.
assembly به یک فکر کنید مانند یک مجموعه از کد و داده‌ها در یک واحد واحد، مانند یک بسته.
این از سایر assemblyها قابل دسترسی نیست، بنابراین این فقط به این معناست که کلاس Program
فقط برای کلاس‌های دیگر داخل namespace ما به نام OldStyle در دسترس خواهد بود.
internal ما قصد داریم بیشتر درباره این موضوع و سایر کلیدواژه‌هایی که علاوه بر کلیدواژه وجود دارند یاد بگیریم،
اما در این مرحله فقط آن را بپذیرید.
بعداً، این موضوع خیلی بیشتر قابل درک خواهد بود.
چند کلیدواژه دیگر هم وجود دارد که می‌خواهم درباره آن‌ها صحبت کنم، اما چیزی که می‌بینید این است که ما
Program این کلاس به نام را ایجاد می‌کنیم و سپس داخل براکت‌های { }، محتوای کلاس
قرار دارد.
پس هر چیزی که داخل این براکت‌های { } باشد، بخشی از برنامه ما محسوب می‌شود.
باشه.
داخل این کلاس Program، می‌بینید که ما یک متد داریم به نام static void Main.
آشنا شده‌اید.void قبلاً با
وvoid نوع بازگشتی است که هیچ چیزی برنمی‌گرداند.
درسته.
قبلاً این را دیده‌ایم.
و این یک متد است.
پس این متد main نام دارد.
و می‌توانید ببینید که در داخل پرانتزها پارامترهایی می‌پذیرد.
args حالا می‌گوید که می‌خواهد یک آرایه از رشته‌ها به نام داشته باشد.
main این فقط به این معناست که می‌توانید آرگومان‌هایی به متد خود قبل از اجرای کارش ارسال کنید.
این هم چیزی است که در این مرحله از دوره به طور کامل نیازی به درک آن ندارید.
ما بعداً دقیقاً توضیح خواهیم داد که این چه معنایی دارد.
static با این حال، این یک کلمه کلیدی به نام وجود دارد.
staticو به این معناست که این متد متعلق به خود کلاس است و نه به هیچ نمونه‌ای از کلاس.
بنابراین نیازی به ایجاد یک شیء از کلاس برای استفاده از این متد ندارید.
می‌توانید مستقیماً آن را روی کلاس فراخوانی کنید.
پس این چیست؟
main این فقط به این معناست که می‌توانیم این متد را بدون نیاز به فراخوانی دستی و.
اجرا کنیمProgram بدون نیاز به ایجاد یک شیء از کلاس
پس این فقط کار را برای ما راحت‌تر می‌کند تا بتوانیم برای حالا شروع کنیم.
internal و static به جز اینکه وقتی از این قالب استفاده می‌کنید، این کلیدواژه‌های را خواهید داشت که
وقتی برنامه‌نویسی شیء‌گرا را واقعاً بفهمیم، خیلی بیشتر معنا پیدا خواهند کرد.
و این فقط همین است.
ساختار قالب قدیمی به این شکل است.
اما هر زمان که از این قالب قدیمی استفاده می‌کنید، این همچنین انعطاف‌پذیری و آزادی بیشتری .
به شما می‌دهد
حالا موضوع این است که ما این چیزی داریم به نام
Console.WriteLine.
Hello World.
این خط چیزی است که قبلاً دیده‌ایم و کاملاً ساده است.
در اصل، تمام کدی که قبلاً اجرا کردیم درون همان کروشه‌ها قرار داشت.
main راستی، متد فقط نقطه‌ی ورود به نرم‌افزار ما است.
main این فقط به این معنا است که هر زمان روی دکمه‌ی اجرا کلیک کنیم، متد اجرا خواهد شد.
این نقطه‌ی شروع است.
نام بسیار خاصی دارد.
است.main نام آن
این نام بسیار ویژه‌ای برای یک متد است، به همین دلیل به شکل متفاوتی رفتار می‌شود.
می‌گرددmain پس واقعاً وقتی برنامه‌ی خود را اجرا می‌کنید، ابتدا به دنبال متد
و سپس هر چیزی که داخل آن است را اجرا خواهد کرد.
پس اگر کدی خارج از متد main باشد، اما هیچ‌وقت داخل متد main فراخوانی نشود،
اجرایی نخواهد شد.
اجازه دهید منظورم را نشان دهم.
پس اگر حالا این کد را کپی کنم و اینجا بچسبانم، می‌بینید که یک خطا دریافت می‌کنم.
WriteLine می‌گوید نام در زمینه‌ی فعلی وجود ندارد، پس اجرا نخواهد شد.
هیچ کاری انجام نخواهد داد.
بنابراین باید داخل متد main باشد، یا از متد main فراخوانی شود، یا از چیزی که از متد main فراخوانی می‌شود.
ما بعداً به این موضوع بیشتر می‌پردازیم، اما فعلاً بیایید عمیق‌تر نگاه کنیم که این متد main
در واقع چه کاری برای ما انجام می‌دهد.
اما دوباره، این نقطه‌ی شروع برنامه‌ی ما است.
پس اگر به هر یک از پروژه‌های دیگرمان نگاه کنیم، تمام کدی که داشتیم در اینجا بود و اساساً
همان جایی بود که کل این کد قرار داشت.
پس اجازه دهید این خط را حذف کنم.
تمام این کد برای ما مخفی بود و ما اینجا بودیم.
پس شما اینجا هستید، درست مثل روی نقشه، درست است؟
پس تمام پروژه‌هایی که در چند مثال اخیر ساخته‌ایم، همگی داخل اینجا بودند.
بگذارید نشان دهم این به چه معناست.
پس الان دو پروژه دارم.
این پروژه قدیمی به سبک قدیمی است، با عبارات سطح بالا.
و این پروژه بدون عبارات سطح بالا است، پروژه متدهای ما.
باشه.
پس این پروژه متدها تمام این کدها، این متغیرها و این متدها را دارد.
همه این‌ها را دارد، در واقع اجازه دهید این همه چیز را بیرون بیاورم و اینجا قرار دهم.
همان چیز است.
پس این کد همان کدی است که در جلسه قبلی داشتیم، آن جلسه درباره متدها، پارامترها و نوع بازگشتی بود.
باشه.
و اکنون همان چیز است، اما ما چیزهای دیگر را هم می‌بینیم.
قبلاً نمی‌دیدیم که داخل یک دره بودیم، اما تمام مدت کارمان را داخل آن دره انجام می‌دادیم.
باشه.
اما نمی‌دانستیم که بیرون از آن دره کوه‌ها و چیزهای دیگر زیادی وجود دارد، کل جهان به نوعی.
و ما فقط در این دره کار خود را انجام می‌دادیم و در آن دره امن بودیم و راحت بود.
اما اکنون از آن دره خارج می‌شویم و می‌بینیم، اوه، در واقع چیزهای بیشتری وجود دارد.
و این یک مثال بسیار ساده از آنچه در جریان است.
اما بله، در واقع اکنون هر زمان که از کد خود استفاده می‌کنیم، به جای استفاده از سبک قبلی
که از عبارات سطح بالا استفاده نمی‌کردیم، اکنون فقط عبارات سطح بالا را داریم، اما
تمام کد ما داخل متد main قرار خواهد گرفت.
پس ما این متد به نام main داریم.
و تمام کد ما داخل آن قرار خواهد گرفت.
اکنون می‌توانید آن را کوچک کنید.
می‌بینید که کوچکتر می‌شود.
اما بله، در واقع همین است.
پس هیچ چیز تغییر نمی‌کند.
تنها چیزی که متفاوت است این است که اکنون کد ما داخل متد main خواهد بود و ما فقط از آنجا کار می‌کنیم.
باشه.
پس همین بود برای این ویدیو.
در ویدیوی بعد می‌بینمتان.