البرمجة

فهم الفرق بين const وreadonly في C#

ببساطة، يأتي استخدام ‘readonly’ و ‘const’ في لغة البرمجة C# لتحديد الطريقة التي يتم بها تعريف واستخدام الثوابت في الكود. يُستخدم كل منهما في سياق مختلف ويتمتع بخصائص فريدة تميزه عن الآخر.

لنبدأ بالحديث عن ‘const’، هذه الكلمة الرئيسية تستخدم لتعريف الثوابت التي لا يمكن تعديل قيمتها بمجرد تعريفها. بمعنى آخر، قيمة الثابت ‘const’ تكون ثابتة أثناء تشغيل البرنامج ولا يمكن تغييرها. عندما تقوم بتعريف متغير باستخدام ‘const’، فإنك تُلزم بتعيين قيمته في نفس السطر الذي تقوم فيه بتعريفه.

على الجانب الآخر، ‘readonly’ تُستخدم لتعريف الحقول (fields) التي لا يمكن تعديلها بمجرد تعريفها، ولكن يمكن تعيين قيمتها في وقت التشغيل (runtime)، وليس فقط عند التعريف. يُستخدم ‘readonly’ عادةً في الحالات التي تتطلب قيمة ثابتة للكائن أو الفئة، ولكن لا يمكن تحديدها أثناء التصميم.

الفرق الرئيسي بينهما يكمن في وقت تعيين القيمة، حيث يتم تحديد قيمة ‘const’ أثناء التصميم وتظل ثابتة، بينما يتم تحديد قيمة ‘readonly’ في وقت التشغيل ويمكن تعيينها في البناء (constructor) أو في الأماكن التي يُسمح فيها بتعيين قيمة للحقل.

على سبيل المثال، إذا كنت قد استخدمت ‘const’ لتعريف قيمة ولكن حاولت تغييرها في وقت التشغيل، فسيؤدي ذلك إلى خطأ في الترجمة. أما إذا استخدمت ‘readonly’ في مثل هذا السياق، فلن يكون هناك خطأ، وستتمكن من تعيين القيمة في وقت التشغيل.

باختصار، ‘const’ تُستخدم لتعريف ثوابت بقيم ثابتة أثناء التصميم، بينما ‘readonly’ تُستخدم لتعريف حقول لا يمكن تعديلها أثناء التصميم ولكن يمكن تعيين قيمتها في وقت التشغيل. استخدم كل منهما حسب الحاجة والسياق لضمان التصميم السليم والأداء الفعّال للبرنامج.

المزيد من المعلومات

بالتأكيد، سنوسع في المزيد من المعلومات حول ‘const’ و ‘readonly’ في لغة البرمجة C#.

أولاً، دعونا نتحدث عن ‘const’:

  1. ثوابت في وقت التصميم (Compile-Time Constants):

    • ‘const’ يتم تحديد قيمتها أثناء وقت التصميم وتظل ثابتة طوال فترة تشغيل البرنامج.
    • يمكن استخدام ‘const’ في تعريف الأعداد والسلاسل والقيم الأساسية الأخرى.
  2. تحديد في النطاق الخاص (Scoped Constants):

    • ‘const’ يكون محدودًا في نطاق الكلاس أو الفئة التي يتم تعريفها بها.
    • لا يمكن استخدام ‘const’ في تعريف متغيرات محلية داخل الدوال.
  3. تحديد قيمة أثناء التصميم:

    • عند استخدام ‘const’ لتعريف متغير، يجب أن تتم تعيين قيمته في نفس السطر الذي يتم فيه التعريف.

الآن، دعونا نتحدث عن ‘readonly’:

  1. ثوابت في وقت التشغيل (Runtime Constants):

    • ‘readonly’ يتم تحديد قيمتها في وقت التشغيل، ويمكن تعيين قيمتها في بناء الكائن (constructor) أو في حالة الحقول الثابتة.
  2. تحديد في النطاق العام (Public Constants):

    • يمكن استخدام ‘readonly’ لتعريف حقول ثابتة في الكلاس ويمكن الوصول إليها من قبل الأكواد الخارجية.
  3. التفاعل مع متغيرات غير ثابتة:

    • يُسمح بتعيين قيمة ‘readonly’ في وقت التشغيل، وهو مفيد عند الحاجة إلى ثابت يعتمد على حالة البرنامج أو قيمة محسوبة.

في المجمل، يكمن الاختلاف الرئيسي بين ‘const’ و ‘readonly’ في وقت تحديد القيمة ونطاق الاستخدام. ‘const’ يستخدم لتعريف ثوابت تعتمد على قيم ثابتة في وقت التصميم، بينما ‘readonly’ يستخدم لتحديد حقول لا يمكن تعديلها في وقت التصميم ولكن يمكن تعيين قيمتها في وقت التشغيل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر