Avatar ·

ما الفرق بين 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` يمكن أن يختلف بين الكائنات المختلفة. كيف يعمل هذا على مستوى التجميع؟