عند تشغيل الكود المعروض، قد يحدث NullReferenceException في السطر:
scssTeamFahrer.Add(FTemp);
هذا الخط يحاول إضافة كائن من نوع Fahrer
إلى قائمة TeamFahrer
، ولكنه يعطي استثناء الاستثناء لأن القائمة TeamFahrer
لم تُبنَ في الوقت الذي تم فيه استدعاء الطريقة Bar
.
الحل لهذه المشكلة هو تهيئة القائمة TeamFahrer
قبل استدعاء الطريقة Bar
. يمكن القيام بذلك على سبيل المثال عن طريق تهيئة القائمة في بناء الكائن Team
:
csharpclass Team
{
public List TeamFahrer { get; set; }
public Team()
{
TeamFahrer = new List();
}
public void Bar(string salad, string hotdog, string brokkoli)
{
Motorrad MTemp = new Motorrad(brokkoli);
Fahrer FTemp = new Fahrer(salad, hotdog, MTemp);
TeamFahrer.Add(FTemp);
}
}
بعد إجراء هذا التغيير، ينبغي أن يعمل الكود بشكل صحيح ويتجنب NullReferenceException عندما يتم استدعاء الطريقة Bar
.
المزيد من المعلومات
بالطبع، هناك المزيد من المعلومات التي يمكن تقديمها لفهم أسباب حدوث استثناء NullReferenceException في الكود المعطى.
عند التحقق من الكود، نرى أن الخطأ الرئيسي يكمن في أن القائمة TeamFahrer
لم يتم تهيئتها قبل استخدامها في طريقة Bar
. عند استدعاء طريقة Add
على TeamFahrer
دون تهيئتها، يُرمَى استثناء NullReferenceException لأن القائمة لا تشير إلى أي كائن حاليًا.
تهيئة القائمة TeamFahrer
في بناء الكائن Team
تحل هذه المشكلة، حيث يتم إنشاء قائمة جديدة عند إنشاء كائن Team
. هذا يضمن أن القائمة مُبنَية ومستعدة للاستخدام عندما تتم استدعاء طريقة Bar
.
بالإضافة إلى ذلك، يمكن أيضًا إضافة التحقق من القيم المدخلة في طريقة Bar
لضمان أنها ليست فارغة أو تحتوي على قيم null
، وهذا قد يساعد في تجنب حدوث استثناء NullReferenceException في حالات أخرى قد تنشأ من قيم غير صالحة.