مقدمة للأشياء العامة (دليل البرمجة لـ #C)

الفئات والأساليب العامة تجمع إعادة الاستخدام وأمان النوع والكفاءة بطريقة لا تتوفر لأخواتها الغير عامة. يتم استخدام الأشياء العامة بشكل كبير مع المجموعات والأساليب التي تعمل عليها. يوفر الإصدار 2.0 من مكتبة فئات .NET Framework مساحة اسم جديدة System.Collections.Generic تحتوي على عدة فئات مجموعات عامة جديدة. من المستحسن أن كل التطبيقات التي تستهدف .NET Framework 2.0 والإصدارات الأحدث استخدام فئات المجموعات العامة الجديدة بدلاً من القديمة الغير العامة مثل ArrayList. لمزيد من المعلومات، راجع الأشياء العامة في مكتبة فئات .NET Framework (دليل البرمجة لـ #C).

وبالطبع، يمكنك أيضاً إنشاء أنواع عامة مخصصة وأساليب لتوفير الحلول العامة الخاصة بك والنقوش التصميمية الآمنة النوع والأكثر كفاءة. يظهر مثال التعليمات البرمجية التالي فئة قائمة مرتبطة عامة بسيطة لغرض التوضيح. (في معظم الحالات، يجب عليك استخدام فئة List<T> الموفرة من قبل مكتبة فئات .NET Framework بدلاً من إنشاء الفئة الخاصة بك.) نوع المعلمة T يُستخدم في عدة مواقع حيث يستخدم نوع ملموس عادةً للإشارة إلى نوع العنصر المُخزن في القائمة. يتم استخدامه في الطرق التالية:

  • كنوع معلمة الأسلوب في الأسلوب AddHead.

  • كنوع قيمة الإرجاع للأسلوب العام GetNext والخاصية Data في الفئة المتداخلة Node.

  • كنوع البيانات الخاصة للعضو في الفئة المتداخلة.

لاحظ أن T تتوفر في الفئة المتداخلة Node. عند إنشاء مثيل لـ GenericList<T> بنوع ملموس على سبيل المثال GenericList<int> كل تواجد لـ T يتم استبداله بـ int.

// type parameter T in angle brackets
public class GenericList<T> 
{
    // The nested class is also generic on T.
    private class Node
    {
        // T used in non-generic constructor.
        public Node(T t)
        {
            next = null;
            data = t;
        }

        private Node next;
        public Node Next
        {
            get { return next; }
            set { next = value; }
        }

        // T as private member data type.
        private T data;

        // T as return type of property.
        public T Data  
        {
            get { return data; }
            set { data = value; }
        }
    }

    private Node head;

    // constructor
    public GenericList() 
    {
        head = null;
    }

    // T as method parameter type:
    public void AddHead(T t) 
    {
        Node n = new Node(t);
        n.Next = head;
        head = n;
    }

    public IEnumerator<T> GetEnumerator()
    {
        Node current = head;

        while (current != null)
        {
            yield return current.Data;
            current = current.Next;
        }
    }
}

يظهر مثال التعليمات البرمجية التالي كيفية استخدام التعليمات البرمجية للعميل الفئة العامة GenericList<T> لإنشاء قائمة أعداد صحيحة. بكل بساطة عن طريق تغيير وسيطة النوع، يتم تغيير التعليمات البرمجية التالية بسهولة لإنشاء قوائم من السلاسل أو من أي نوع خاص آخر:

class TestGenericList
{
    static void Main()
    {
        // int is the type argument
        GenericList<int> list = new GenericList<int>();

        for (int x = 0; x < 10; x++)
        {
            list.AddHead(x);
        }

        foreach (int i in list)
        {
            System.Console.Write(i + " ");
        }
        System.Console.WriteLine("\nDone");
    }
}

راجع أيضًا:

المرجع

عام (إرشادات برمجة C#)

System.Collections.Generic

المبادئ

دليل البرمجة لـ #C