فصل 3 از 40 درس 1 از 1

متغیرها و انواع داده

متغیرها و انواع داده

بخشی از آموزش جامع C# و .NET 10

محتوای درس متغیرها و انواع داده

نوع داده تعیین می‌کند یک مقدار چگونه در حافظه نگهداری شود و چه عملیات‌هایی روی آن معتبر باشد. انتخاب Type صحیح یکی از مهم‌ترین تصمیم‌های روزمره در برنامه‌نویسی C# است.

۱. تعریف متغیر

متغیر یک نام برای دسترسی به مقدار در حافظه است. C# نوع متغیر را در زمان کامپایل کنترل می‌کند و از بسیاری از خطاهای ناسازگاری نوع جلوگیری می‌کند.

مثال

int age = 30;
         string name = "Sara";
         Console.WriteLine($"{name}: {age}");

در این مثال، مفهوم «تعریف متغیر» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۲. انواع عددی

int و long برای اعداد صحیح، float و double برای محاسبات اعشاری عمومی و decimal برای محاسبات مالی که دقت ده‌دهی اهمیت دارد استفاده می‌شوند.

مثال

int stock = 25;
         long views = 9_000_000_000L;
         decimal price = 1_250_000.50m;
         Console.WriteLine(price * stock);

در این مثال، مفهوم «انواع عددی» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۳. bool، char و string

bool برای منطق دوحالته، char برای یک کاراکتر UTF-16 و string برای متن استفاده می‌شود. string یک Reference Type تغییرناپذیر است.

مثال

bool active = true;
         char grade = 'A';
         string title = "C#";
         Console.WriteLine($"{title} {grade} {active}");

در این مثال، مفهوم «bool، char و string» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۴. var و استنتاج نوع

var به کامپایلر اجازه می‌دهد نوع متغیر را از عبارت سمت راست استنتاج کند. var به معنی dynamic یا بدون نوع بودن نیست.

مثال

var count = 10;
         var course = "C#";
         Console.WriteLine(count.GetType().Name);

در این مثال، مفهوم «var و استنتاج نوع» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۵. const و readonly

const برای مقادیری است که در زمان کامپایل ثابت‌اند. readonly برای Fieldهایی مناسب است که فقط هنگام تعریف یا در Constructor مقداردهی می‌شوند.

مثال

const decimal TaxRate = 0.10m;
         readonlyValueExample();
         static void readonlyValueExample() => Console.WriteLine(TaxRate);

در این مثال، مفهوم «const و readonly» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۶. Nullable Types

Value Typeها با ? می‌توانند null بپذیرند. Nullable Reference Types نیز تحلیل ایستای احتمال null را برای Reference Typeها فراهم می‌کند.

مثال

int? selectedId = null;
         int id = selectedId ?? 0;
         Console.WriteLine(id);

در این مثال، مفهوم «Nullable Types» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۷. مثال‌های عملی

int count = 12;
         long total = 9_000_000_000L;
         double ratio = 12.75;
         decimal price = 149_900.50m;
         bool isActive = true;
         char grade = 'A';
         string title = "C# Course";

این نمونه عملی چند مفهوم فصل را در کنار هم قرار می‌دهد و برای مشاهده رفتار واقعی کد قابل اجرا و تغییر است.

var courseName = "C#";
         const int MaxAttempts = 3;
         int? selectedId = null;

این نمونه عملی چند مفهوم فصل را در کنار هم قرار می‌دهد و برای مشاهده رفتار واقعی کد قابل اجرا و تغییر است.

۸. خطاهای رایج

• استفاده از double برای محاسبات مالی دقیق

• فرض اینکه var نوع متغیر را در زمان اجرا تغییر می‌دهد

• نادیده گرفتن null در Reference Typeها

۹. نکات اجرایی

• نام‌ها، Typeها و Methodها را متناسب با مفهوم دامنه و بدون ابهام انتخاب کنید.

• هشدارهای کامپایلر و Nullable را بدون بررسی خاموش نکنید.

• منطق هر بخش را تا حد امکان کوچک، قابل تست و مستقل از I/O غیرضروری نگه دارید.

۱۰. تمرین عملی

مدلی از اطلاعات یک محصول شامل شناسه، نام، قیمت، موجودی، فعال بودن و درصد تخفیف تعریف کنید و مقادیر آن را در Console نمایش دهید.

۱۱. جمع‌بندی

در این فصل، مبانی «متغیرها و انواع داده» با تمرکز بر ساختارهای اصلی زبان، الگوهای صحیح استفاده و خطاهای رایج بررسی شد. تسلط بر این مفاهیم زمینه لازم برای اتصال موضوع به فصل‌های بعدی و طراحی کدهای خواناتر، قابل نگهداری و قابل تست را فراهم می‌کند.