البرمجة

حل مشكلة Object reference in C#

الخطأ الذي تواجهه يحدث بسبب محاولتك استخدام دالة Add في الكلاس ApplicantList كما لو كانت تعود بقائمة جديدة من البيانات، بينما الدالة Add لا تقوم بذلك، بل تضيف بيانات جديدة إلى القائمة الموجودة بالفعل.

عندما تستدعي ApplicantList.Add(salutation, firstname, lastname)، فإنك تحاول استدعاء الدالة كما لو أنها دالة ثابتة (static)، لكنها في الواقع ليست كذلك. الحل هو أن تقوم بإنشاء كائن من النوع ApplicantList أولاً، ثم تستخدم دالة Add لإضافة البيانات. على سبيل المثال:

csharp
ApplicantList applicantsList = new ApplicantList(); applicantsList.Add(salutation, firstname, lastname);

بهذه الطريقة، تقوم بإنشاء كائن applicantsList من النوع ApplicantList، ثم تستخدم دالة Add لإضافة البيانات كما هو موضح أعلاه.

يجب أن يكون الفهم الآن أكثر وضوحًا. الأمر ليس دائمًا واضحًا في البداية، لكن مع التجربة والتعلم المستمر، ستتمكن من تجنب مثل هذه الأخطاء في المستقبل.

المزيد من المعلومات

بالطبع، دعني أوسع شرحي لهذه المشكلة وأقدم لك بعض المعلومات الإضافية التي قد تفيدك في فهمها بشكل أعمق.

أولاً، يجب فهم الفارق بين الدوال الثابتة (static) والدوال غير الثابتة (non-static) في C#. الدوال الثابتة تعمل على مستوى الفئة ولا تتطلب إنشاء كائن من الفئة لاستدعائها، بينما الدوال غير الثابتة تتطلب إنشاء كائن من الفئة قبل استدعائها.

عندما تعرف دالة كـ Add في كلاسك ApplicantList كـ غير ثابتة، فهذا يعني أنه يجب عليك إنشاء كائن من النوع ApplicantList قبل استخدامها.

في مثالك، حينما تستدعي ApplicantList.Add(salutation, firstname, lastname)، فإنه يتعين عليك أن تنشئ كائنًا ApplicantList أولاً ثم تستخدم الدالة Add على هذا الكائن.

ثانيًا، في الكود الخاص بك، تقوم بتعريف كلاس جديد يسمى ApplicantList يرث من List، وهذا يعني أنه يمتلك جميع الخصائص والدوال التي يمتلكها List، بالإضافة إلى أي دوال أو خصائص تضيفها.

ثالثًا، عند استخدام دالة Add داخل كلاس ApplicantList، يجب أن تأخذ بعين الاعتبار أنك لا تقوم بإضافة عنصر جديد إلى الكائن الحالي (الذي هو نفسه ApplicantList) بل تقوم بإضافة عنصر جديد إلى القائمة الداخلية التي تمتلكها ApplicantList.

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر