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) ولكن لا يمكن تعديلها بعد تعيينها.- الثوابت تزيد من أمان ووضوح الكود، وتحسن الأداء.
تعليقات
إرسال تعليق