المُنشئات
اكتب فئة Box بحقل int اسمه size ومُنشئ Box(int n) يضع size = n;. في Pine أبقِ Main وابنِ صندوقًا واحدًا بـ Box b = new Box(4);، ثم اكتب b.size. أبقِ النوعين في ملف التعليم نفسه حتى يبقى dotnet run بسيطًا. شغّل بـ dotnet run. يجب أن تُظهر الشاشة سطرًا واحدًا: 4. الرقم الذي تمرّره إلى new يصل إلى المُنشئ، والمُنشئ يخزّنه على الكائن قبل أن يستمر Main. وضع الحقل عند البناء — داخل المُنشئ — هو ما تعلّمه هذه الصفحة. أبقِ اسم الفئة العامة البادئة Pine.
متد يعمل عندما يبني new
للمُنشئ نفس اسم الفئة. بلا نوع إرجاع void وبلا نوع إرجاع آخر. عندما يكتب Main العبارة new Box(4)، يبني C# الكائن ويشغّل ذلك المُنشئ مع 4 كقيمة لـ n. بعد انتهاء المُنشئ، يحمل المتغير الكائن الجاهز. هذا كل عمل الصفحة: مرّر قيمة إلى new، دع المُنشئ يخزّنها في الحقل، ثم اكتب الحقل لترى أن التخزين نجح.
افتح ملف Pine. اسم فئة البدء يبقى Pine. هذه الصفحة لا تعيد تسمية البادئ. احذف أي بقايا c.fill = 3; إن كان تعيين Cup ذلك كل ما لديك في Main. احذف أي بقايا فئة Cup. احذف أي سطر ReadLine. الملف الذي تحتفظ به لا ينتظر الكتابة.
خارج أقواس Pine المعقوفة — وما زلت في الملف نفسه — اكتب public class Box. داخل الأقواس أعلن int size;. ثم اكتب المُنشئ: Box(int n) { size = n; }. في هذه الصفحة استخدم اسم معامل مختلفًا عن size حتى يبقى التعيين واضحًا بلا كلمة this. لا يوجد Main داخل Box في هذه الصفحة. احفظ الملف قبل التشغيل.
سطر الحقل وحده لا يضع 4 داخل الكائن. جسم المُنشئ يفعل ذلك عندما يناديه new. إن تخطيت المُنشئ وأعلنت الحقل فقط، فلن يطابق new Box(4) لاحقًا، وسيشتكي البناء من الاستدعاء. أبقِ القطعتين في Box: الحقل والمُنشئ الذي يكتب فيه.
using System;
public class Box
{
int size;
Box(int n)
{
size = n;
}
}
Pine يمرّر 4 إلى new Box
Pine يحتفظ بـ public static void Main(). داخل Main اكتب Box b = new Box(4); ثم Console.WriteLine(b.size);. الحجة 4 تدخل معامل المُنشئ n. في هذه الصفحة لا تحتاج سطرًا منفصلًا b.size = 4; — المُنشئ خزّن القيمة أصلًا. سطر الكتابة موجود لتثق بما فعله المُنشئ بلا تخمين. في هذه الصفحة لا تكتب c.fill = 3;. ذلك كان درس الحقول.
using System;
public class Pine
{
public static void Main()
{
Box b = new Box(4);
Console.WriteLine(b.size);
}
}
public class Box
{
int size;
Box(int n)
{
size = n;
}
}
اقرأ الملف المحتفظ به من الأعلى. using System; يجهّز أسماء قصيرة. public class Pine هو البادئ. public static void Main() حيث يبدأ وقت التشغيل. العبارة new Box(4) تبني Box وتنادي Box(int n) مع n يساوي 4. الجسم يكتب size = n، فيصبح size ذلك الكائن 4. ثم يكتب Main قيمة b.size وتُظهر الشاشة 4. لا يجب أن يُطبع شيء آخر.
شغّله بـ dotnet run. البرنامج يكتب سطرًا واحدًا ويتوقف. لا ينتظر منك الكتابة. إن انتظر dotnet run، فما زال ReadLine في الملف. احذف ذلك السطر وأبقِ في Pine عبارة new Box(4) مع الكتابة، والمُنشئ في Box. الشاشة تظهر 4. إن أظهرت الشاشة 3، فما زال مسار بقايا c.fill = 3; يعمل. إن أظهرت ok، فقد يبقى عرض Chip قديم في الملف. لا تعيد تثبيت .NET SDK من أجل شاشة تعرض السطر الخطأ.
إن كتبت new Box() بلا حجة بينما المُنشئ الوحيد يطلب int، يرفض البناء. طابق الاستدعاء مع قائمة معاملات المُنشئ. إن وضعت void قبل اسم المُنشئ، يصبح متدًا عاديًا لا مُنشئًا، ولن يشغّل new Box(4) ذلك الجسم كما تتوقع هذه الصفحة. يجب أن يبدو الرأس مثل Box(int n)، لا void Box(int n)، ولا static int Box(int n).
مقارنة مع التعيين بعد new
في صفحة الحقول كتبت c.fill = 3; بعد new Cup(). ذلك ما زال يعمل. هذه الصفحة تنقل التخزين إلى داخل المُنشئ حتى تُوضع القيمة أثناء بناء الكائن. عرض Cup المتبقي مع c.fill = 3; درس آخر. لهذه الصفحة أبقِ Box وPine وnew Box(4). إن كان في Pine ما زال c.fill = 3; وهذا الملف بلا فئة Cup، احذف ذلك السطر. البناء لن يخترع Cup لأجلك.
كتابة Console.WriteLine(b); وحدها لا تُظهر 4 نظيفًا. اكتب Console.WriteLine(b.size); لترى الرقم المخزَّن. مرجع الكائن وحده ليس قيمة الحقل. تعلّمت ذلك النمط في صفحة الحقول؛ أبقِه هنا عندما تتحقق من عمل المُنشئ.
ما زال بإمكانك تعيين حقل بعد new في برامج أخرى. هذا الدرس يختار مسار المُنشئ فقط حتى تصل أول قيمة مفيدة عند البناء. لا تخلط الأسلوبين في عرض Pine نفسه على هذه الصفحة. مسار واحد واضح يكفي: حجة إلى new، تخزين في المُنشئ، كتابة الحقل.
صندوقان، قيمتا size
كل new Box(...) يشغّل المُنشئ من جديد لكائن منفصل. يمكنك كتابة Box a = new Box(2); وBox b = new Box(9);، ثم كتابة حقلي size كليهما. الاستدعاء الأول يخزّن 2 على كائن. الثاني يخزّن 9 على كائن آخر. الكائنان لا يتشاركان خانة size واحدة.
using System;
public class Pine
{
public static void Main()
{
Box a = new Box(2);
Box b = new Box(9);
Console.WriteLine(a.size);
Console.WriteLine(b.size);
}
}
public class Box
{
int size;
Box(int n)
{
size = n;
}
}
شغّل مجددًا بـ dotnet run. يجب أن تُظهر الشاشة 2 في سطر و9 في السطر التالي. كل استدعاء مُنشئ خزّن حجته على كائنه. كتابة Box b = a; لا تبني كائنًا ثانيًا — استخدم استدعائي new Box(...) عندما تريد قيمتي size. نسخ المرجع ليس مثل مناداة المُنشئ مرتين.
إن أظهر كلا السطرين نفس الرقم، تحقق من أن كل new يمرّر حجة مختلفة وأنك تكتب a.size وb.size بهذا الترتيب. إن توقف البناء عند new الثاني، ابحث عن قوس ناقص أو اسم فئة خاطئ من شكل أقدم. الأخطاء الصغيرة في الاستدعاء الثاني شائعة عندما تلصق السطر الأول وتنسى تغيير الحجة.
ماذا تترك هذه الصفحة لـ this
هذه الصفحة تستخدم size = n; بأسماء مختلفة. صفحة لاحقة — this — تُظهر كيف تتحدث عن حقل الكائن نفسه عندما تتصادم الأسماء. ابقَ هنا مع اسم المعامل الواضح n. لا تخترع this.size في هذه الصفحة إلا إن كنت تعرفه مسبقًا؛ هدف الدرس استدعاء المُنشئ من new. كلمة this موضوع الصفحة التالية، وليست شرطًا لتخزين n في size اليوم.
لا تُدخل Box داخل أقواس Pine المعقوفة. في هذه الصفحة الفئتان أختان في الملف. إن لم يجد البناء Box أثناء تجميع Pine، تحقق من أن public class Box في الملف نفسه. إن أظهرت الشاشة 0، فقد ينقص المُنشئ التعيين، أو ما زال Main يستخدم شكلًا بلا حجة لا يضع size أبدًا — أبقِ Box(int n) { size = n; } وnew Box(4). الصفر على الشاشة يعني عادة أن الحقل بقي عند الافتراضي لأن التخزين لم يعمل.
يمكنك إعلان int size;، وكتابة Box(int n) { size = n; }، والبناء بـ Box b = new Box(4); من Pine.Main. شغّل بـ dotnet run. الشاشة تظهر 4. المُنشئ يعمل عندما يبني new الكائن. مرّرت الرقم عند البناء، خزّنه المُنشئ في الحقل، وأثبتت الكتابة التخزين. فكّر في المُنشئ كإعداد يعمل قبل أن يستمر Main بعد new. Pine يبقى الباب الذي تفتحه بـ dotnet run. الصفحة التالية هي this، حيث تتعلّم طريقة أخرى لتسمية حقول الكائن نفسه داخل متداته ومُنشئاته.
أبقِ رأس المُنشئ بلا void. أبقِ الحجة على new. أبقِ الكتابة على b.size. هذه العادات الثلاث نقطة تفتيش هذه الصفحة قبل المتابعة.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى