فئة مجموعة Visual Basic

المجموعة هي طريقة لتجميع مجموعة من العناصر ذات الصلة. و توجد عدة أنواع مختلفة من المجموعات. يتم استخدام المجموعات المعرّفة مسبقاً في تطبيقات Visual Basic للعديد من الأغراض، على سبيل المثال Control.ControlCollection في Form، التي يتم إرجاعها من قبل خاصية النموذج Controls . كما يمكنك إنشاء مجموعاتك لتنظيم ومعالجة الكائنات.

تعتبر المجموعات طريقة جيدة لتعقّب الكائنات التي قد يحتاج التطبيق الخاص بك إلى إنشاءها ثم إتلافها ديناميكياً. يظهر جزء التعليمات البرمجية التالي كيف يمكنك استخدام أسلوب Add لكائن Visual Basic Collection للاحتفاظ بقائمة من كائنات widget التي قام المستخدم بإنشاءها .

' Declare and create the Collection object.
Public widgetColl As New Microsoft.VisualBasic.Collection() 
' Create a new widget and add it to the widgetColl collection.
Private Sub makeAWidget()
    Dim tempWidget As New widget()
    widgetColl.Add(tempWidget) 
End Sub

في المثال السابق، مجموعة widgetColl تنظم و تكشف عن كل كائنات widget التي تم إنشاؤها من خلال إجراء makeAWidget . يمكنك استرداد مراجع الكائن لكل widget من خلال الفهرس للمجموعة. حجم المجموعة يتم ضبطه تلقائياً لكل كائن جديد widget تتم إضافته . يمكنك استخدام عبارة Visual Basic) For Each...Next) للتكرير خلال المجموعة. إذا كنت تريد إعطاء كائن widget مفتاح حيث يمكن استرداد الكائن بواسطته ، يمكنك توفير سلسلة نصية مثل المعلمة الثانية من أسلوب Add .

كائن Visual Basic  المسمى Collection يقوم بتخزين كل العناصر كنوع Object ، بحيث يمكنك إضافة صنف من أي نوع بيانات. لا توجد أية الحماية ضد أنواع البيانات غير المناسبة التي تتم إضافتها . لتجنب هذا الحد، يمكنك استخدام عام مجموعات مساحة اسم System.Collections.Generic . لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء مجموعة من الكائنات.

إنشاء و إتلاف كائن المجموعة

الكلمة الأساسية عامل تشغيل Visual Basic) New) في تعريف متغير widgetColl تتسبب في إنشاء كائن Collection عند تمرير عنصر التحكم إلى كشف التعريف. لأن Collection تعتبر فئة، بدلاً من نوع القيمة ، يجب عليك إنشاء مثيل منه ثم الاحتفاظ بمرجع لذلك المثيل في متغير. هذا المثيل هو كائن Visual Basic Collection .

مثل أي كائن آخر ، كائن Collection يتم تعليمه لتجميع البيانات المهملة (GC) عند تعيين المتغير الأخير الذي يحتوي على مرجع للكائن إلى لا شيء (Visual Basic) أو الانتقال خارج النطاق. كل مراجع الكائن التي تحتويها يتم تحريرها عندما تم استخلاصها عن طريق تجميع البيانات المهملة . لهذا السبب، المتغير widgetColl في المثال السابق يتم تعريفه في فئة الأصل ، لذلك يظهر خلال دورة حياة البرنامج.

تحتفظ المجموعة بمراجع الكائنات التي يتحكم بها ، لكن لا تحتوي على الكائنات نفسها. ولذلك، تدمير كائن Collection لا تتلف الكائنات التي تتحكم فيها. كل كائن له عنصر بالمجموعة يستمر بالتواجد حتى يتم وضع علامة على كل كائن على حدة و ذلك لتجميع البيانات المهملة.

العمل مع العناصر

الخدمات الأساسية من إضافة و حذف و استرداد العناصر من مجموعة ما تعتمد على الفهارس و المفاتيح. المفتاح هو قيمة String . قد يكون اسماً أو رقم رخصة قيادة ، أو رقم هاتف ، أو ببساطة عدداً صحيحاً محولاً إلى سلسلة. و أسلوب Add يسمح لك بعمل إقران المفتاح مع العنصر كما هو موضح في كيفية القيام بما يلي: إضافة، حذف و استرداد عناصر المجموعة.

الفهرس في فئة Collection هو عدد صحيح بين 1 و عدد العناصر الموجودة في المجموعة. خاصية Count تقوم بإرجاع عدد العناصر الحالية. يمكنك التحكم بالقيمة الأولية لفهرسة العنصر باستخدام معلمات Before أو After عند استدعاء Add، و لكن قد تتغير قيمة الفهرس كلما تمت إضافة و حذف عناصر أخرى . لمزيد من المعلومات، راجع Add.

يمكنك إزالة عنصر واحد من مجموعة بتمرير إما المفتاح الخاص به أو فهرسته الخاصة إلى أسلوب Remove . يمكنك إفراغ مجموعة وإزالة كل العناصر مع أسلوب Clear .

الوصول إلى عناصر

يمكنك تمرير قيمة المفتاح إلى أسلوب Contains لاختبار ما إذا كانت المجموعة تحتوي على عنصر مع هذا المفتاح. يمكنك استرداد عنصر بتمرير إما المفتاح الخاص به أو الفهرس الخاص به إلى خاصية Item .

يمكنك استخدام قيم الفهرس و خاصية Item للتكرار عبر العناصر الموجودة في المجموعة أو يمكنك استخدام عبارة Visual Basic) For Each...Next). و يظهر المثال التالي طريقتان لإعطاء كل الموظفين في مجموعة من كائنات employee رفع 10 في المائة بافتراض أن المتغير employeesColl يحتوي على مرجع لكائن Collection .

Option Strict On
' The following alternative uses the Count and Item properties.
Dim emp As employee
For counter As Integer = 1 To employeesColl.Count 
    emp = CType(employeesColl.Item(counter), employee)
    emp.payRate *= 1.1
Next counter
' The following alternative uses the For Each...Next statements.
For Each emp As employee In employeesColl
    emp.payRate *= 1.1
Next emp

ومع ذلك، إذا قمت بإضافة عنصر واحد أو أكثر إلى employeesColl و التي ليست من النوع employee، فإن التكرار الحلقي For Each يلقي الاستثناء ArgumentException في وقت التشغيل .

نوع بيانات العناصر

كائن Visual Basic Collection يخزن كل عنصر بنوع البيانات Object . ولذلك، نطاق أنواع البيانات التي يمكنك إضافتها إلى كائن Collection هو نفسه نطاق أنواع البيانات التي يمكن تخزينها في متغير Object . يتضمن ذلك أنواع البيانات القياسية، و الكائنات، و المصفوفات و كذلك البنيات المعرفة من قبل المستخدم و مثيلات الفئة .

لأن كائن Collection يخزن كل عنصر على أنه Object، خاصية Item ترجع القيمة Object . لاستخدام العنصر في التعليمات البرمجية ، عليك عادةً التحويل من Object إلى نوع بيانات وقت التشغيل للعنصر . تعتمد طريقة القيام بذلك على إعداد مُبَدْل التحقق من النوع في كشف الخيار الصارمِ.

التحويل من الكائن ضمنياً

إذا Option Strict هو Off، يمكنك تحويل عنصر Collection ضمنيًا إلى نوع البيانات المناسبة ، كما هو موضح في المثال التالي.

Option Strict Off
Dim sampleColl As New Microsoft.VisualBasic.Collection()
Dim sampleString As String = "This is a string"
Dim aString As String
sampleColl.Add(sampleString)
' The following statements convert the collection item to a string.
Try
    aString = sampleColl.Item(1) 
Catch ex As Exception
    ' Insert code to run if the collection item cannot be converted to String.
End Try

التحويل ضمنياً من كائن

إذا Option Strict هو On، يجب عليك التحويل بوضوح من Object إلى نوع بيانات العنصر وقت التشغيل. للحصول على عنصر من Item بهذه الطريقة ، يمكنك استخدام دالة CType لإجراء التحويل، كما هو موضح في المثال التالي.

Option Strict On
Dim sampleColl As New Microsoft.VisualBasic.Collection()
Dim sampleString As String = "This is a string"
Dim aString As String
sampleColl.Add(sampleString)
' The following statements convert the collection item to a string.
Try
    aString = CType(sampleColl.Item(1), String) 
Catch ex As Exception
    ' Insert code to run if the collection item cannot be converted to String.
End Try

الخدمات الإضافية

خصائص وأساليب كائن Collection توفر الخدمات الأساسية فقط للمجموعات. على سبيل المثال ، أسلوب Add لا يمكنه التحقق من نوع العنصر المضاف إلى المجموعة و الذي قد تريد أن تتحقق منه للتأكد من أن المجموعة تحتوي على نوع واحد من العنصر. إذا أمكنك التأكد من هذا في أسلوب Add ، فإنه لديك مجموعة مكتوبة بشدة ، و لا تحتاج إلى تحويل العائد من خاصية Item إلى نوع البيانات الخاصة به وقت التشغيل . يؤدي ذلك إلى تحسين الأداء الخاص بك.

يمكنك توفير وظيفة أقوى — و خصائص إضافية وأساليب و أحداث — عن طريق إنشاء فئة المجموعة الخاصة بك كما هو موضح في كيفية القيام بما يلي: قم بـتعريف المجموعات في الفئات الخاص بك.

راجع أيضًا:

المرجع

Collection

المبادئ

الصفائف في Visual Basic

الـمجموعات في Visual Basic