آموزش C# و .NET – قسمت اول
زبان C# یک زبان برنامه نویسی مدرن و سطح بالا است و شی گرا است که توسط شرکت مایکروسافت توسعه داده شده. این زبان در ابتدا در بستر دات نت (.NET) طراحی و توسعه داده شد و امروزه برای ساخت انواع برنامه و اپلیکیشن هایی از جمله وب، موبایل، بازی های کامپیوتری (موتور بازی سازی Unity) واینترنت اشیا و هوش مصنوعی مورد استفاده قرار می گیرد.
دات نت (.NET) یک پلتفرم نرم افزاری رایگان، متن باز (OpenSource) و چندسکویی است که از ساخت و اجرای برنامه ها در سیستم عامل مختلف از جمله Linux، Windows، MacOS پیتشبانی می کند.
مهمترین بخش های .NET عبارت است از:
.NET Runtime
.NET SDK
Base Class Libraries
از سال 2016 و با عرضه .NET Core، دات نت از انحصار ویندوز خارج شد و به یک پلتفرم متن باز و چندسکویی تبدیل گردید. امروزه نسخه اصلی .NET بدون واژه Core و Framework به مسیر ادامه می دهد و بصورتی در واقع یکپارچه شده است.
اجزای اصلی دات نت
قبل از شروع آموزش بهتر است با واژه ها و مفاهیم کلیدی به عنوان یک برنامه نویس C# بیشتر آشنا شید:
.NET SDK
ابزار .NET SDK (Software Development Kit) مجموعه ای از ابزارهای خط فرمان، کامپایلر C#، کتابخانه ها و فایل های لازم برای ساخت، اجرا، تست و انتشار پروژه های دات نت است.
اگر تجربه ای از استفاده از اجرا کردن برنامه های C# داشته باشید و برنامه را از طریق ترمینال با دستور dotnet new console اجرا کنید در واقع از .NET SDK استفاده می کنید.
پس از نصب .NET SDK با دستور زیر می توانید نسخه این بسته نرم افزاری رو مشاهده کنید:
dotnet --version
.NET Runtime
محیطی است که برنامه های کامپایل شده دات نت را اجرا می کند. این محیط شامل بخش مدیریت حافظه (Garbage Collection)، بارگذاری اسمبلی ها، مدیریت استثناها (Exceptions) و اجرای کد هم زمان می باشد.
بدون Runtime کد شما اجرا نمی شود. ران تایم در حالت های مختلفی عرضه می شود:
CoreCLR => برای برنامه های عادی
Mono => برای محیط های کوچک
NativeAOT => برای کامپایل به کد ماشین
CLR (Common Language Runtime)
وقتی کد سی شارپ را کامپایل می کنید، خروجی مستقیما کد ماشین نیست، بلکه یک کد میانی به نام IL (Intermediate Language) یا CIL (Common Intermediate Language) تولید می شود.
این فایل ها با پسوند .dll یا .exe ذخیره می شوند و حاوی دستورات سطح پایینی هستند که تمام زبان های دات نت می توانند از آن استفاده کنند. سپس در زمان اجرا CLR این کدهای میانی IL یا CIL را به کد ماشین مخصوص سیستم عامل جاری ترجمه می کند که اسم این پروسه Just-In-Time Compilation است.
اما چرا این پروسه انقدر طولانی است؟
این پروسه و ساز و کار باعث می شود برنامه نویس یکبار کد خود را بنویسد و آن را بر روی پلتفرم های مختلف اجرا کند.
اما نکته مهم
دات نت از امکان Native AOT (Ahead-Of-Time) نیز بهره میبرد. این امکان کد IL را مستقیما به کد ماشین تبدیل می کندو نیازی به JIT در زمان اجرا نیست. این حالت برای برنامه هایی که سرعت راه اندازی بالا و مصرف کم حافظه نیاز دارند مناسب است.
ساخت اولین پروژه
صرف نظر از انتخاب IDE و یا TextEditor شما یک پروژه را ایجاد می کنید که شامل دو فایل اصلی است:
فایل csproj: فایل پروژه (با فرمت XML) که تنظیمات ساخت، نسخه دات نت و بسته های NuGet مورد نیاز را مشخص می کند. این فایل مرکز پروژه شماست.
فایل Program.cs: این فایل نقطه شروع برنامه شماست. هر پروژه کنسول اپ (Console Application) یک متد Main دارد که اجرا از آن آغاز می شود. در قالب های جدید C#، این متد بطور ضمنی و با استفاده از Top Level Statements تعریف می شود. یعنی نیازی نیست کلاس و متد Main را صریح بنویسیم. می توانیم مستقیما دستورات خود را در فایل Program.cs قرار دهیم.
یک نمونه کد که فایل Program.cs را بهتر درک کنیم:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
int age = 29;
Console.WriteLine($"AGE: {age}");
}
}