ما هي الكائنات العامة (Generic Objects)؟

  • Home
  • Là Gì_3
  • ما هي الكائنات العامة (Generic Objects)؟
فبراير 16, 2025

الكائنات العامة (Generics) هي تقنية برمجة قوية في C#.NET، تتيح كتابة كود قابل لإعادة الاستخدام مع أنواع بيانات مختلفة دون الحاجة إلى إعادة كتابة المنطق لكل نوع. تعمل Generics بناءً على استخدام معلمات النوع (type parameters)، والتي يتم تمثيلها بأحرف كبيرة بين قوسين مدببين <>، مثل List<T> و Dictionary<TKey, TValue>. حيث T و TKey و TValue هي معلمات نوع تمثل نوع البيانات المحدد الذي سيتم استخدامه عند إنشاء الكائن.

أحد أكثر تطبيقات Generics شيوعًا هو في إنشاء المجموعات (collections) مثل List<T>. قبل وجود Generics، لإنشاء قائمة من كائنات Student، كان علينا استخدام ArrayList وتحويل النوع في كل مرة يتم فيها استخراج عنصر. كان هذا ينطوي على خطر حدوث أخطاء وقت التشغيل في حالة تحويل النوع بشكل خاطئ.

#
// بدون استخدام الكائنات العامة
ArrayList students = new ArrayList();
students.Add(new Student());
students.Add(new Car()); // لا يتم اكتشاف الخطأ أثناء الترجمة

Student first = (Student)students[0]; // يتطلب تحويل النوع، قد يتسبب في خطأ وقت التشغيل

مع Generics، يحل List<T> هذه المشكلة من خلال السماح فقط بإضافة الكائنات التي تنتمي إلى نوع T إلى القائمة. سيقوم المترجم باكتشاف الخطأ أثناء الترجمة إذا حاولنا إضافة كائن من نوع غير صحيح.

#
// باستخدام الكائنات العامة
List<Student> students = new List<Student>();
students.Add(new Student()); 
students.Add(new Car()); // خطأ أثناء الترجمة

Student first = students[0]; // لا يتطلب تحويل النوع

يوفر استخدام Generics العديد من الفوائد:

  • إعادة استخدام الكود: كتابة الكود مرة واحدة فقط لأنواع بيانات متعددة. على سبيل المثال، يمكن استخدام الفئة List<T> لـ List<int> و List<string> و List<Student>، …
  • أمان النوع: يقوم المترجم بفحص نوع البيانات أثناء الترجمة، مما يقلل من أخطاء وقت التشغيل.
  • الأداء: تجنب عمليات الملاكمة/فك الملاكمة (boxing/unboxing) عند العمل مع أنواع القيم، مما يزيد من أداء البرنامج.
  • سهولة القراءة والصيانة: كود أوضح وأسهل في الفهم والصيانة.

لا يقتصر استخدام Generics على المجموعات فقط، بل يُستخدم أيضًا في تعريف الطرق (Generic Method) والفئات (Generic Class). على سبيل المثال، يمكن لطريقة Swap<T> تبديل قيم متغيرين من أي نوع بيانات.

#
public static void Swap<T>(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}


int x = 10;
int y = 20;
Swap<int>(ref x, ref y); // تبديل قيمتين عدديتين

string str1 = "Hello";
string str2 = "World";
Swap<string>(ref str1, ref str2); // تبديل قيمتين نصيتين

باختصار، Generics هي ميزة مهمة في C#.NET، تساعد في كتابة كود مرن وآمن وفعال. إنها أساس العديد من التقنيات الأخرى مثل LINQ وتلعب دورًا رئيسيًا في تطوير التطبيقات الحديثة. فهم ماهية الكائنات العامة وكيفية استخدامها سيساعد المبرمجين على تحسين جودة الكود وتحسين أداء التطبيقات.

Leave A Comment

تصنيفات

Recent Posts

Create your account