۱۴۰۴/۰۷/۰۹ Nebular

تفاوت‌های اصلی const و readonly

ویژگیconstreadonly
زمان مقداردهیCompile-time (زمان کامپایل)Run-time (زمان اجرا)
امکان مقداردهیفقط در لحظه تعریفدر تعریف یا داخل Constructor
مقدار قابل قبولفقط مقادیر اولیه (primitive literals) مثل int, string, doubleمی‌تواند مقدار از متغیر، متد یا new بگیرد
ضمنی بودن staticبله → نیازی به static نیستخیر → باید جداگانه static باشد اگر بخواهیم
تغییر مقدار بعد ساختغیرممکنغیرممکن بعد از سازنده
عملکردسریع‌تر چون کامپایلر Inline می‌کنددسترسی از طریق فیلد معمولی

✅ مثال مقایسه‌ای

class Example
{
    public const int ConstValue = 10;          // فقط همینجا
    public readonly int ReadonlyValue;         // می‌تواند در constructor مقدار بگیرد

    public Example(int input)
    {
        ReadonlyValue = input;                // مجاز
        // ConstValue = 20;  ❌ خطا: قابل تغییر نیست
    }
}

☑️ نکته مهم درباره const

public const string Name = "Ali"; 
  • این مقدار واقعاً در تمام جای استفاده “کپی” می‌شود.
  • اگر کتابخانه (DLL) داشته باشیم و مقدار const در آن تغییر کند،
    پروژه‌های وابسته باید دوباره Build شوند تا مقدار جدید اعمال شود.

☑️ نکته مهم درباره readonly

public static readonly string TimeStamp = DateTime.Now.ToString();
  • این کار با const ممکن نیست چون DateTime.Now در زمان اجرا مشخص می‌شود، نه کامپایل.

✅ جمع‌بندی آزمونی

سوالجواب
کدام سریع‌تر است؟const چون inline می‌شود
کدام انعطاف‌پذیرتر است؟readonly چون در constructor می‌توان مقدار داد
آیا const همیشه static است؟بله، ضمنی
آیا readonly می‌تواند static باشد؟بله، ولی باید جداگانه نوشته شود
Accept Cookies
Accept Cookies
[your-shortcode]