CodeShot
Fundamentals2 دقیقه مطالعه

مبانی C# (Fundamentals)

مفاهیم پایه‌ای که هر برنامه‌نویس C# باید قبل از فریم‌ورک‌ها بلد باشد: CLR، CTS/CLS، Managed Code، Stack/Heap و Garbage Collection.

چرا مهم است؟

این مفاهیم پایه درک شما از نحوه اجرای واقعی کد C# در پس‌زمینه، مدیریت حافظه و رفتار Runtime را شکل می‌دهند و پیش‌نیاز مباحث پیشرفته‌تر مثل Performance و Reflection هستند.

CLR (Common Language Runtime)

محیط اجرای برنامه‌های .NET است؛ مسئول اجرای کد، مدیریت حافظه، Garbage Collection و Exception Handling. زبان‌هایی مثل C# و F# روی آن اجرا می‌شوند.

CTS و CLS

CTS (Common Type System) استاندارد تعریف نوع‌ها در .NET است و باعث می‌شود زبان‌های مختلف با هم کار کنند:

int age = 25;
string name = "Ali";

CLS (Common Language Specification) مجموعه قوانین مشترک برای سازگاری زبان‌هاست؛ کتابخانه نوشته‌شده با یک زبان در زبان دیگر هم قابل استفاده می‌شود.

Managed Code در برابر Unmanaged Code

Managed Code توسط CLR مدیریت می‌شود و دارای Garbage Collection است (مثلاً یک اپلیکیشن C#). Unmanaged Code خارج از کنترل CLR اجرا می‌شود و مدیریت حافظه به عهده برنامه‌نویس است (مثلاً کد Native ++C).

Value Type و Reference Type

Value Type Reference Type
مقدار واقعی، معمولاً در Stack (int x = 10;) آدرس داده، معمولاً در Heap (Person p = new Person();)

Stack و Heap

Stack سریع‌تر است و برای داده‌های کوتاه‌عمر با مدیریت خودکار استفاده می‌شود. Heap برای Objectها استفاده می‌شود و توسط Garbage Collector مدیریت می‌شود.

Garbage Collection و نسل‌های GC

GC حافظه Objectهای بدون Reference را آزاد می‌کند:

var user = new User();
user = null; // بعداً GC حافظه را آزاد می‌کند

GC حافظه را به سه نسل تقسیم می‌کند تا Performance بهتر شود:

Generation کاربرد
Gen 0 Objectهای کوتاه‌عمر
Gen 1 Objectهای متوسط
Gen 2 Objectهای بلندعمر

Assembly و Namespace

Assembly واحد اصلی Deployment در .NET است (.dll یا .exe) و شامل کد IL، Metadata و Manifest می‌شود. Namespace برای سازمان‌دهی کلاس‌ها استفاده می‌شود:

namespace MyApplication.Services
{
    class UserService { }
}

کلاس، Object، Constructor و Access Modifier

class User
{
    public string Name { get; set; }

    public User() => Console.WriteLine("Created");
}
Modifier دسترسی
public همه‌جا
private فقط داخل کلاس
protected کلاس و فرزند
internal همان Assembly

Exception Handling

try { int x = 10 / 0; }
catch (Exception ex) { Console.WriteLine(ex.Message); }

Compilation در .NET

C# Code → Compiler → IL Code → CLR + JIT → Machine Code

کد C# ابتدا به IL تبدیل می‌شود و JIT در زمان اجرا آن را به کد ماشین تبدیل می‌کند.

نکته کلیدی: CLR اجرای برنامه را مدیریت می‌کند، CTS/CLS سازگاری بین زبان‌های .NET را تضمین می‌کنند، و GC با تقسیم حافظه به نسل‌های Gen 0/1/2 مدیریت حافظه را بهینه می‌کند.

خلاصه

  • CLR محیط اجرای .NET است و مدیریت حافظه، اجرای کد و Exception Handling را انجام می‌دهد.
  • Value Type روی Stack و Reference Type روی Heap ذخیره می‌شود؛ GC حافظه Heap را با تقسیم به نسل‌های Gen 0/1/2 مدیریت می‌کند.
  • کد C# قبل از اجرا به IL تبدیل و توسط JIT به Machine Code تبدیل می‌شود.

حالا امتحان کن

🧩آزمون مبانی C# (Fundamentals)6 سؤال · نمره قبولی 60٪
این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←