۱۴۰۴/۰۷/۰۹
☑️ نکته مهم درباره
☑️ نکته مهم درباره
تفاوتهای اصلی const و readonly
| ویژگی | const | readonly |
|---|---|---|
| زمان مقداردهی | 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
[your-shortcode]