المكونات العامة في .NET Framework

العوام تسمح لك بتفصيل أسلوب أو فئة أو بنية أو واجهة إلى نوع البيانات الدقيقة المتعامل معه. على سبيل المثال، بدلاً من استخدام الفئة Hashtable , التي تسمح للمفاتيح و القيم أن تكون من أي نوع ، يمكنك استخدام الفئة العامة Dictionary<TKey, TValue> و عيّن النوع المسموح به للمفتاح و النوع المسموح به للقيمة. من بين فوائد العوام زيادة قابلية إعادة إستخدام التعليمات البرمجية و أمان النوع.

يوفر هذا الموضوع نظرة عامة حول العوام في .NET Framework و ملخص للأنواع و الأساليب العامة. ويحتوي على الأقسام التالية:

  • تعريف و استخدام العوام

  • مصطلحات العوام

  • مكتبة الفئات و دعم اللغات

  • الأنواع و العوام المتداخلة

  • مواضيع ذات صلة

  • المرجع

تعريف و استخدام العوام

العوام هي فئات , و بنيات , و واجهات , و أساليب تحتوي على عناصر نائبة (معلمات نوع) لواحد أو أكثر من الأنواع التي يقومون بتخزينها أو استخدامها. مجموعة فئات عامة قد تستخدم معلمة نوع كعنصر نائب لنوع الكائنات التي تخزنها; تظهر معلمات النوع كأنواع لحقولها و أنواع المعلمة لأساليبها. أسلوب عام قد يستخدم معلمة النوع الخاصة به كنوع قيمة الإرجاع الخاص به أو كنوع لإحدى المعلمات الأساسية الخاصة به. التعليمات البرمجية التالية توضح تعريف بسيط لفئة عامة.

Public Class Generic(Of T)
    Public Field As T
End Class
public class Generic<T> 
{
    public T Field;
}
generic<typename T> public ref class Generic 
{
public:
    T Field;
};

عندما تنشئ مثيل لفئة عامة , تحدد الأنواع الفعلية للتعويض بها في معلمات النوع. هذا ينشئ فئة عامة جديدة ، يُشار إليها كفئة عامة مكونة ، بالأنواع التي اخترتها معوضاً بها في كل مكان تظهر فيه معلمات النوع. والنتيجة هي فئة آمنة النوع مفصلة على اختيارك للأنواع , كما توضح التعليمات البرمجية التالية.

Dim g As New Generic(Of String)
g.Field = "A string"
Generic<string> g = new Generic<string>();
g.Field = "A string";
Generic<String^>^ g = gcnew Generic<String^>();
g->Field = "A string";

العودة إلى الأعلى

مصطلحات العوام

يتم استخدام المصطلحات التالية لمناقشة العوام في .NET Framework:

  • تعريف النوع العام هو تعريف فئة , أو بنية , أو واجهة يعمل كقالب مع عناصر نائبة للأنواع التي يمكن أن يحتويها أو يستخدمها. على سبيل المثال، الفئة System.Collections.Generic.Dictionary<TKey, TValue> يمكن أن تحتوي على نوعين اثنين: المقاتيح و القيم. لأن تعريف النوع العام هو قالب فقط , لا يمكنك إنشاء مثيلات للفئة , أو البنية أو الواجهة و هذا هو تعريف النوع العام.

  • معلمات النوع العامأو معلمات النوع ، هي عناصر نائبة في تعريف نوع أو أسلوب عام. النوع العام System.Collections.Generic.Dictionary<TKey, TValue> له معلمتي نوع ، TKey و TValue ، اللتان تمثلان نوعي مفاتيحها و قيمها.

  • النوع العام المنشئ أو النوع المنشئ ، هو نتيجة تعيين الأنواع لمعلمات النوع العام لتعريف النوع العام.

  • وسيطة النوع العام التي تستخدم أي نوع يعوض به عن معلمة النوع العام.

  • المصطلح العام نوع عام يتضمن كلا من الأنواع المنشئة و تعريفات النوع العام.

  • التباين المشترك و التباين المضاد لمعلمات النوع العام يتيح لك إستخدام الأنواع العامة المنشئة ذات وسيطات نوع مشتق أكثر (التباين المشترك) أو مشتق أقل (التباين المضاد) بدلاً من إستهداف نوع منشئ. التباين المشترك و التباين المضاد يشار إليها معاً بالتباين . لمزيد من المعلومات، راجع التباين المشترك و التباين المضاد في العناصر العامة.

  • القيود هي الحدود الموضوعة على معلمات النوع العام. على سبيل المثال، قد تحد معلمة نوع إلى الأنواع التي تقوم بتطبيق الواجهة العامة System.Collections.Generic.IComparer<T> , للتأكد من أن مثيلات النوع يمكن ترتيبها. يمكنك أيضاً تقييد نوع المعلمات إلى الأنواع التي لها فئة أساسية معينة , أو التي لها مُنشئ افتراضي , أو التي هي أنواع مرجعية أو أنواع قيم. مستخدمي النوع العام لا يمكنهم التعويض عن وسيطات النوع بقيم لا تستوفي القيود.

  • تعريف الأسلوب العام هو أسلوب بقائمتي معلمات: قائمة بمعلمات النوع العام و قائمة بالمعلمات الأساسية. يمكن أن تظهر معلمات النوع كنوع القيمة المرجعة أو كنوع للمعلمات الأساسية , كما توضح التعليمات البرمجية التالية.

    Function Generic(Of T)(ByVal arg As T) As T
        Dim temp As T = arg
        ...
    End Function
    
    T Generic<T>(T arg) { T temp = arg; ...}
    
    generic<typename T> T Generic(T arg) { T temp = arg; ...};
    

    يمكن أن تظهر الأساليب العامة على نوع عام أو غير عام. من المهم ملاحظة أن أسلوب يكون غير عام فقط بسبب انتمائه لنوع عام , أو حتى لأنه يحتوي على معلمات أساسية أنواعها هي المعلمات العامة للنوع المرفق. الأسلوب يكون عام فقط إذا كان له قائمته الخاصة من معلمات النوع. في التعليمات البرمجية التالية ,فقط الأسلوب G عام.

    Class A
        Function G(Of T)(ByVal arg As T) As T
            ...
        End Function
    End Class
    Class Generic(Of T)
        Function M(ByVal arg As T) As T
            ...
        End Function
    End Class
    
    class A 
    {
        T G<T>(T arg) {...}
    }
    class Generic<T> 
    {
        T M(T arg) {...}
    }
    
    ref class A 
    {
        generic<T> T G(T arg) {...};
    };
    generic<typename T> ref class Generic 
    {
        T M(T arg) {...};
    };
    

العودة إلى الأعلى

مكتبة الفئات و دعم اللغات

يوفر .NET Framework عدد من مجموعات الفئات في مساحات الأسماء التالية:

يتم توفير واجهات عامة لتطبيق مقارنات الفرز و المساواة في مساحة الاسم System , مع أنواع المفوضات العامة لمعالجات الأحداث , و تحويلات , و مسندات البحث.

تم إضافة دعم العوام إلى مساحة الاسم System.Reflection لفحص الأنواع العامة و الأساليب العامة , إلى System.Reflection.Emit لإصدار التجميعات الحيوية التي تحتوي على أنواع و أساليب عامة , و إلى System.CodeDom لتوليد الرسومات المصدرية التي تتضمن العوام.

يوفر وقت تشغيل اللغة العامة opcodes جديدة و بادئات لدعم الأنواع العامة في لغة Microsoft الوسيطة (MSIL) ، بما في ذلك Stelem ، و Ldelem ، و Unbox_Any ، و Constrained ، و Readonly.

Visual C++ , و C# و Visual Basic كلهم يوفرون الدعم الكامل لتعريف و استخدام العوام. للحصول على مزيد من المعلومات حول دعم اللغات ، راجع أنواع عامة في Visual Basic ، و مقدمة حول Generics (C# البرمجة الدليل) ، و Overview of Generics in Visual C++‎.

العودة إلى الأعلى

الأنواع و العوام المتداخلة

النوع المتداخل في نوع عام يمكن أن يعتمد على معلمات النوع للنوع العام المرفق. يعتبر وقت تشغيل اللغة العامة الأنواع المتداخلة كعوام , حتى إذا لم يكن لديهم معلمات نوع عام خاصة بهم. عندما تنشئ مثيل من نوع متداخل , يجب أن تحدد وسائط النوع لكل الأنواع العامة المرفقة.

العودة إلى الأعلى

مواضيع ذات صلة

Title

الوصف

المجموعات العامة في .NET Framework

يصف مجموع الفئات العامة و أنواع عامة أخرى في .NET Framework.

المفوضون العوام لمعالجة الصفائف و القوائم

تصف المفوضات العامة للتحويلات , و مسندات البحث , و الإجراءات التي ستنفذ على عناصر من مجموعة أو صفيف.

الواجهات العامة

تصف هذه المقالة الواجهات العامة التي توفر أداء وظيفي عام عبر مجموعات من الأنواع العامة.

التباين المشترك و التباين المضاد في العناصر العامة

تصف التباين المشترك و التباين المضاد في معلمات النوع العام.

المزايا و القيود للعام

تلخص المزايا و القيود في استخدام العوام.

أنواع المجموعة المستخدمة بشكل شائع

توفر معلومات تلخيصية حول الصفات المميزة و تسلسلات أحداث الاستخدام لمجموعة الأنواع في .NET Framework، , بما فيها الأنواع العام.

متي تستخدم المجموعات العامة

تصف القواعد العامة لتحديد متى نستخدم مجموعات الأنواع العامة.

كيفية: تعريف نوع عام مع انعكاس بحذف

تشرح هذه المقالة كيفية إنشاء تجميعات حيوية تتضمن أنواع و أساليب عامة.

أنواع عامة في Visual Basic

تصف هذه المقالة ميزة العوام لمستخدمي Visual Basic, و تتضمن مواضيع كيفية القيام بـ الخاصة باستخدام و تعريف الأنواع العامة.

مقدمة حول Generics (C# البرمجة الدليل)

توفر نظرة عامة حول تعريف و استخدام الأنواع العامة لمستخدمي C#‎.

Overview of Generics in Visual C++‎

تصف هذه المقالة ميزة العوام لمستخدمي C++، , و تتضمن الاختلافات بين العوام و القوالب.

العودة إلى الأعلى

المرجع

System.Collections.Generic

System.Collections.ObjectModel

System.Reflection.Emit.OpCodes

العودة إلى الأعلى