الخطأ الذي تواجهه يحدث بسبب محاولتك استخدام دالة Add
في الكلاس ApplicantList
كما لو كانت تعود بقائمة جديدة من البيانات، بينما الدالة Add
لا تقوم بذلك، بل تضيف بيانات جديدة إلى القائمة الموجودة بالفعل.
عندما تستدعي ApplicantList.Add(salutation, firstname, lastname)
، فإنك تحاول استدعاء الدالة كما لو أنها دالة ثابتة (static)، لكنها في الواقع ليست كذلك. الحل هو أن تقوم بإنشاء كائن من النوع ApplicantList
أولاً، ثم تستخدم دالة Add
لإضافة البيانات. على سبيل المثال:
csharpApplicantList 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
عليه بدلاً من استدعائها مباشرة على الكلاس نفسه.