C# - Constants

 

C# - Constants

في C#، تُستخدم الثوابت (Constants) لتخزين القيم التي لا يمكن تغييرها بعد تعريفها. أي أن قيمة الثابت تبقى كما هي طوال فترة تشغيل البرنامج.


إنشاء ثابت في C#

يتم تعريف الثابت باستخدام الكلمة المفتاحية const قبل نوع البيانات واسم المتغير.

الصيغة العامة:

const <نوع البيانات> <اسم الثابت> = <القيمة>;

مثال على الثوابت:

const double PI = 3.14159;
const int DAYS_IN_WEEK = 7;
const string COMPANY_NAME = "TechCorp";

🛑 بعد تعريف الثابت، لا يمكنك تغيير قيمته لاحقًا!
مثلاً، الكود التالي غير صحيح:

PI = 3.14; // ❌ خطأ! لا يمكن تغيير قيمة الثابت

لماذا نستخدم الثوابت؟

✅ تسهيل الصيانة: بدلاً من تغيير القيم في كل مكان بالكود، يمكنك تغييرها في مكان واحد فقط.
✅ تحسين الأمان: يمنع حدوث أخطاء برمجية ناتجة عن تعديل القيم عن طريق الخطأ.
✅ زيادة وضوح الكود: عند استخدام const، يصبح واضحًا أن هذه القيم لا تتغير.


الثوابت مقابل المتغيرات العادية

الميزة const ثابت متغير عادي
إمكانية تغيير القيمة ❌ لا يمكن ✅ يمكن
الأداء ⏳ أسرع، لأنه يتم تعويض القيمة أثناء الـ compilation 🕑 أبطأ، حيث يتم تحديد القيمة أثناء الـ runtime
التخزين يتم استبدال القيمة مباشرة داخل الكود يتم تخزينها في الذاكرة (Memory)

الثوابت ذات النطاق الواسع (public const)

يمكنك تعريف الثوابت داخل الفئات (Classes)، وجعلها عامة (public) بحيث تكون متاحة في جميع أجزاء البرنامج.

مثال:

class MathConstants
{
public const double PI = 3.14159;
public const int LIGHT_SPEED = 299792458; // سرعة الضوء بالمتر في الثانية
}
class Program
{
static void Main()
{
Console.WriteLine("قيمة PI: " + MathConstants.PI);
Console.WriteLine("سرعة الضوء: " + MathConstants.LIGHT_SPEED);
}
}

الثوابت مقابل readonly

بعض القيم لا يمكن تحديدها إلا أثناء تشغيل البرنامج، لذلك يتم استخدام readonly بدلًا من const.

الفرق بين const و readonly

الميزة const readonly
القيمة ثابتة وقت الـ compile ✅ نعم ❌ لا
يمكن تعيينها داخل constructor ❌ لا ✅ نعم
مكان التخزين Code Memory (رمز البرنامج) Heap (كومة الذاكرة)

مثال على readonly:

class Configuration
{
public readonly string ServerName;
public Configuration(string server)
{
ServerName = server; // يمكن تعيين القيمة هنا
}
}

⚠️ readonly يمكن أن تأخذ قيمتها من المعاملات أثناء تشغيل البرنامج، بينما const يجب تحديد قيمتها مسبقًا.


متى تستخدم const ومتى تستخدم readonly؟

✔️ استخدم const عندما تكون القيمة ثابتة ولن تتغير أبدًا (مثل عدد أيام الأسبوع).
✔️ استخدم readonly عندما تحتاج إلى تحديد القيمة أثناء التشغيل، مثل عنوان خادم (Server Name).


خلاصة

  • const: قيمة ثابتة لا تتغير أبدًا، يتم تحديدها أثناء الـ compilation.
  • readonly: قيمة يمكن تحديدها أثناء التشغيل (Runtime) ولكن لا يمكن تعديلها بعد تعيينها.
  • الثوابت تزيد من أمان ووضوح الكود، وتحسن الأداء.


تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

HTML - ملخص شامل لأهم التاجات

HTML - Youtube videos تضمين فيديوهات اليوتيوب