استكشاف أخطاء الصفيف
تسرد هذه الصفحة بعض المشاكل الشائعة التي تحدث عند العمل مع الصفائف.
أخطاء التحويل البرمجي للتعريف و تهيئة صفيف
يمكن أن تنشأ أخطاء التحويل البرمجي من الفهم الخاطئ لقواعد التعريف، الإنشاء، و تهيئة صفائف. الأسباب الأكثر شيوعاً للأخطاء هي التالية:
تزويد بند عامل تشغيل Visual Basic) New) بعد تحديد أطوال البعد في تعريف متغير الصفيف. تظهر سطور التعليمات البرمجية التالية التعريفات غير الصالحة لهذا نوع.
Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()
Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)
Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()
تحديد طول البعد لأكثر من صفيف ذو مستوى علوي للصفيف خشن. تظهر سطور التعليمات البرمجية التالية تعريف غير صالح لهذا نوع.
Dim INVALIDjaggedByteArray(1)(1) As Byte
إهمال الكلمة الأساسية New عند تحديد قيم العنصر. تظهر سطور التعليمات البرمجية التالية تعريف غير صالح لهذا نوع.
Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}
تزويد بند New بدون بأقواس ({}). تظهر سطور التعليمات البرمجية التالية التعريفات غير الصالحة لهذا نوع.
Dim INVALIDsingleDimByteArray() As Byte = New Byte()
Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)
Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)
Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)
الوصول إلى صفيف خارج حدود
تعين عملية تهيئة صفيف حد علوي وكذلك حد سفلي لكل بعد. يجب أن يحدد كل وصول إلى عنصر من الصفيف فهرس صحيح أو منخفض، لكل بعد. إذا كان أي فهرس أقل من الحد السفلي الخاص به أو فوق الحد العلوي الخاص به ينتج الاستثناء IndexOutOfRangeException. لا يمكن للمحول البرمجي كشف مثل هذا الخطأ، لهذا يحدث خطأ في وقت التشغيل.
تحديد الحدود
إذا مرر مكون آخر صفيف إلى تعليمات برمجية، على سبيل المثال كوسيطة إجراء، لم تكن تعرف حجم ذلك الصفيف أو أطوال أبعاده. يجب تحديد الحد الأعلى لكل بعد لصفيف دائماً قبل محاولة الوصول إلى أية عناصر. إذا تم إنشاء الصفيف بواسطة بعض الوسائل غير بند Visual Basic New قد يكون الحد الأدنى شيء آخر بدلاً من 0 و من الأكثر أماناً تحديد الحد الأدنى أيضاً.
تحديد البعد
عند تحديد حدود صفيف متعددة الأبعاد, انتبه إلى كيفية تحديد البعد. المعلمات dimension الخاصة بأساليب GetLowerBound و GetUpperBound مستندة على 0، حيث معلمات Rank الخاصة بدوال Visual Basic LBound و UBound مستندة على 1.
راجع أيضًا:
المهام
كيفية القيام بما يلي: تـهيّئة متغيرات صفيف في Visual Basic