في البرمجة الفعلية، المصفوفات هي كائنات يتم استخدامها كثيرًا. مثل Array و List وما إلى ذلك، فهي جميعها عبارة عن تغليفات للمصفوفات.
دعونا نلقي نظرة على طريقتي التعريف التاليتين، هل يمكننا رؤية الفرق بينهما؟
Dim tB1() كـ بايت
خافت tB2() بالبايت = {}
كلاهما يحددان مصفوفة بايت، ولا توجد عناصر في المصفوفة.
ولكن الفرق يمكن رؤيته في الجملتين التاليتين.
Debug.Print(tB1 لا شيء)
Debug.Print(tB2 لا شيء)
نتيجة الجملة الأولى صحيحة، ونتيجة الجملة الثانية خطأ. لاحظ أن tB1 عبارة عن مصفوفة ولكن لم تتم تهيئتها، وهو ما يعادل "لا شيء". على الرغم من عدم احتوائه على عناصر، فقد تمت تهيئته ولا يعادل "لا شيء". الطول، والنتيجة هي 0، مما يشير إلى أنها مصفوفة فارغة. سيؤدي الوصول إلى سمات tB1 الأخرى، مثل الطول، إلى حدوث خطأ.
لا تزال هناك اختلافات بين المصفوفات الفارغة والمصفوفات غير المهيأة في العديد من الأماكن.
على سبيل المثال:
Debug.Print(System.Text.Encoding.Default.GetString(tB1))
Debug.Print(System.Text.Encoding.Default.GetString(tB2))
على الرغم من عدم وجود عناصر في tB1 وtB2، فسيطرح النظام استثناءً لأنه لم تتم تهيئة tB1. على الرغم من أن tB2 لا يحتوي على عناصر، إلا أنه يمثل مصفوفة تحتوي على 0 عناصر. ولن يقوم النظام بطرح استثناء وإرجاع سلسلة فارغة.
يمكن أن نرى من هذا أنه لا يزال هناك فرق بين لا شيء ومجموعة من العناصر 0، وهذا شيء نتجاهله بسهولة.