ما الفرق بين const و readonly في C#؟ متى نستخدم أيهما؟
مرحباً بالجميع! بدأت تعلم لغة C# ووجدت مُعدِّلين يبدوان متشابهين جداً بالنسبة لي: `const` و `readonly`. أفهم أن كليهما يجعل المتغير غير قابل للتغيير، لكني أشعر أنه يجب أن يكون هناك فرق جوهري بينهما أفتقده.
إليك مثال بسيط كتبته:
```csharp
public class MyClass
{
public const int MyConst = 10;
public readonly int MyReadonly = 20;
public MyClass()
{
MyReadonly = 30; // هذا يعمل
// MyConst = 40; // خطأ: لا يمكن تغيير الثابت
}
public void SomeMethod()
{
// MyReadonly = 50; // خطأ: يمكن تغيير الحقل readonly فقط في المُنشئ
}
}
```
أرى أنه يمكن تغيير الحقل `readonly` في المُنشئ، أما `const` فلا. لكن هل هناك اختلافات أخرى؟ على سبيل المثال، سمعت أن `const` هو قيمة ثابتة بطبيعتها، بينما `readonly` يمكن أن يختلف بين الكائنات المختلفة. كيف يعمل هذا على مستوى التجميع؟