كيفية القيام بما يلي: تعريف مجموعات نوع آمن
يمكنك تعريف و إنشاء مجموعة باستخدام Collection الفئة الموفر من قبل Visual Basic، كما يوضح المثال التالي.
Public Class widgetRepository
Public widgetColl As New Microsoft.VisualBasic.Collection()
' Insert code to implement additional functionality.
End Class
ومع ذلك، widgetColl المجموعة ليست نوع قوي. يمكنك إضافة أي نوع من العانصر له وليس فقط widget الكائنات. عند استعادة عنصر قد تحتاج إلى تحويله إلى widget. يؤدي هذا الأمر إلى مشاكل تأمين النوع. على سبيل المثال، افترض أن إضافة String لمجموعة باستخدام التعليمة البرمجية التالية.
Dim notWidget As String = "This is not a widget object!"
widgetColl.Add(notWidget)
إذا قمت بذلك، فإن أية محاولة لاحقة لاسترداد هذا العنصر يطرح استثناء ArgumentException في وقت التشغيل لأن عنصر المجموعة ليس من النوع widget.
حماية من مشكلات تأمين النوع
نوصي بزيادة أمان النوع بواسطة تعريف فئة عامة. هذا يفرض التنويع القوي ويوفر أيضًا مرونة في نوع بيانات معينة الذي تعمل معه. لمزيد من المعلومات، راجع الـأنواع العامة في Visual Basic.
لـتعريف مجموعة آمان النوع في فئة
استخدم إحدى الفئات العامة في مساحة الاسم System.Collections.Generic , على سبيل المثال List<T>، لفئة مجموعة. ثم يمكنك إنشاء مجموعة مقيّدة إلى widget الأعضاء فقط. يوضح المثال التالي كيفية تعديل التعريف في المثال السابق لإنشاء مجموعة عامة.
Public widgetColl As New System.Collections.Generic.List(Of widget)
عند القيام بذلك، التنويع القوي يسمح لك بإضافة فقط widget العناصر إلى المجموعة، وكل عنصر تسترده خلال Item الخاصية هو widget الكائن. أيضاً لوجود هذا التنويع القوي، يمكن للتعليمات البرمجية المسترده استخدام كل الخصائص والأساليب المكشوفة عن طريق widget.
-أو-
قم بـإنشاء فئة مجموعة خاصة بك بدون استخدام أي فئات معرفة مسبقاً. قم بـتقييد أسلوب Add لقبول فقط widget الكائنات, ثم تقوم بتطبيق خاصية Item الخاصة بك مع نوع الإرجاع widget. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تعريف مجموعات نوع آمن.
اذا قام Item بإرجاع عناصر من نوع Object، ويكون لديك الوصول صريح فقط إلى الخصائص و الأساليب معرفة في Object الفئة. لـلوصولwidget الأعضاء, ويجب عليك إما تشغيل Option Strict Off أو استخدام دالة CType لتحويل العنصر الذي تم إرجاعه بوضوح الى widget، كما في التعليمات البرمجية التالية.
Dim nextWidget As widget Try nextWidget = CType(widgetColl.Item(1), widget) Catch ex As Exception ' Insert code to run if the collection item is not a widget. End Try
وفي كلتا الحالتين، استخدام Object العناصر بهذه الطريقة يؤدي Visual Basic إلى تطبيق ربط في وقت التشغيل ، ومما يقلل الأداء الخاص بك.
لاحظ أن Visual BasicCollection الفئة يقبل ويرجع Object العناصر, بحيث يكون له أيضاً مساوئ التنويع الضعيف و ربط. وقت متأخر.
راجع أيضًا:
المرجع
System.Collections.Specialized