المكونات العامة في .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.Collections.Generic تُنشئ نشرة بمعظم أنواع المجموعات العامة التي يوفرها .NET Framework، مثل الفئات العامة List<T> و Dictionary<TKey, TValue>.
مساحة الأسم System.Collections.ObjectModel تُنشئ نشرة بأنواع مجموعات عامة إضافية , مثل الفئة العامة ReadOnlyCollection<T> , المفيدة في عرض نماذج الكائن لمستخدمي الفئات الخاصة بك.
يتم توفير واجهات عامة لتطبيق مقارنات الفرز و المساواة في مساحة الاسم 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، , بما فيها الأنواع العام. |
|
تصف القواعد العامة لتحديد متى نستخدم مجموعات الأنواع العامة. |
|
تشرح هذه المقالة كيفية إنشاء تجميعات حيوية تتضمن أنواع و أساليب عامة. |
|
تصف هذه المقالة ميزة العوام لمستخدمي Visual Basic, و تتضمن مواضيع كيفية القيام بـ الخاصة باستخدام و تعريف الأنواع العامة. |
|
توفر نظرة عامة حول تعريف و استخدام الأنواع العامة لمستخدمي C#. |
|
تصف هذه المقالة ميزة العوام لمستخدمي C++، , و تتضمن الاختلافات بين العوام و القوالب. |
العودة إلى الأعلى
المرجع
System.Collections.ObjectModel
System.Reflection.Emit.OpCodes
العودة إلى الأعلى