البرمجة

البنى والمعدودات في C#: تنظيم هيكل البرمجة بفعالية

في عالم برمجة C#، تتلألأ مفاهيم “البنى” (Structures) و”المعدودات” (Enums) كأحجار الزاوية التي تسهم في بناء تصميمات البرامج بشكل فعّال وفعّال. تعتبر هاتين المفهومين جزءًا أساسيًا من تطوير البرامج في لغة C#، حيث توفر كل منهما إمكانيات فريدة تعزز من القوة والأداء في تحقيق أهداف البرمجة.

لنلقي نظرة عميقة على “البنى” أولاً. تعتبر “البنى” هي هياكل بيانات تسمح بتجميع متغيرات مختلفة تحت واحدة، مما يسهم في تنظيم البيانات بشكل هرموني وتجنب التشتت. يمكننا تعريف “البنى” باستخدام الكلمة المفتاحية struct، ويمكن أن تحتوي على متغيرات مختلفة تسمى “أعضاء”، والتي يمكن الوصول إليها بشكل مباشر. على سبيل المثال:

csharp
struct Point { public int X; public int Y; }

في هذا المثال، تم تعريف “البنية” Point مع عضوين هما X و Y من نوع الصحيح. يمكننا الآن إنشاء متغيرات من هذا النوع والوصول إلى أعضائها كما يلي:

csharp
Point p; p.X = 10; p.Y = 5;

الآن، بمجرد تعريف البنية واستخدامها، يمكننا تنظيم البيانات بشكل أفضل وتحسين فهم الشيفرة.

أما بالنسبة للـ “المعدودات”، فهي تتيح لنا تعريف مجموعة من القيم التي تكون قابلة للعد. يمكننا تعريف المعدودة باستخدام الكلمة المفتاحية enum. على سبيل المثال:

csharp
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }

هنا، تم تعريف “المعدودة” Days مع أيام الأسبوع كقيم. يمكننا استخدام هذه المعدودة لتمثيل أيام الأسبوع بشكل سهل وفعّال في الشيفرة.

csharp
Days currentDay = Days.Wednesday;

هكذا، يمكننا الآن استخدام المتغير currentDay لتمثيل يوم الأربعاء.

باختصار، يسهم استخدام “البنى” و “المعدودات” في جعل الشيفرة أكثر وضوحًا وإدارة للبيانات، مما يعزز من قابلية صيانة الشيفرة وفهمها. استفادة مهندسي البرمجيات من هاتين الميزة في C# تعكس الاهتمام العميق بتصميم البرامج والكفاءة في إدارة البيانات.

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

بالطبع، سنقوم الآن بتوسيع المعرفة حول “البنى” و “المعدودات” في لغة C# بشكل أعمق.

بدايةً، يجدر بنا فهم أن “البنى” في C# تشبه إلى حد كبير الكلاسات، ولكن هناك فارق رئيسي بينهما. في حين أن الكلاسات تكون عادةً ذات طابع (Reference Type)، تكون البنى ذات طابع قيمة (Value Type). هذا يعني أن عناصر البنية تُخزن مباشرة في المكدس (Stack) بدلاً من العنوان في الذاكرة كما هو الحال في الكلاسات. وهذا يجعل استخدام البنى أكثر كفاءة من حيث استهلاك الذاكرة، خاصةً عندما يكون لدينا عدد كبير من الكائنات.

علاوة على ذلك، يمكن توسيع “البنى” باستخدام الأساليب (Methods)، ولكن يجب أن تكون هذه الأساليب بسيطة ومتناسبة مع الهدف من استخدام البنية. على سبيل المثال:

csharp
struct Rectangle { public int Length; public int Width; public int CalculateArea() { return Length * Width; } }

في هذا المثال، تم إضافة أسلوب CalculateArea لحساب مساحة المستطيل. يمكننا الآن استخدام هذا الأسلوب مع متغيرات من نوع Rectangle.

أما بالنسبة لـ “المعدودات”، فهي تتيح لنا تحديد مجموعة محددة من القيم التي يمكن أن تكون فقط من نوع معين. يمكن استخدامها لجعل الشيفرة أكثر وضوحًا وتجنب استخدام القيم السحرية (Magic Numbers). يمكننا أيضًا تعيين قيم ابتدائية للمعدودة أو تركها بدون قيم وترك C# تعين قيم ابتدائية لها. على سبيل المثال:

csharp
enum Weekdays { Sunday = 1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }

في هذا المثال، تم تعيين قيم ابتدائية للمعدودة Weekdays، حيث يتم تعيين قيمة 1 ليوم الأحد وتتابع بشكل تلقائي للأيام اللاحقة.

وتجدر الإشارة إلى أن “المعدودات” في C# يمكن أيضًا أن تكون من نوع البايت (byte)، الشارة (sbyte)، القيم الصحيحة (int)، والقيم الطويلة (long)، حسب متطلبات التطبيق.

باختصار، تظهر “البنى” و “المعدودات” في C# كأدوات قوية لتحسين هيكلة الشيفرة وتنظيم البيانات، مما يزيد من إمكانية إدارة الشيفرة وقراءتها بشكل فعّال.

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