تخطَّ إلى المحتوى

struct

الهيكل struct struct

struct نوع قيمي: يُنسخ بالكامل عند التمرير أو الإسناد بدل مشاركة نفس المرجع كما في class.

صياغة struct تشبه class تقريبًا، لكن الفرق الجوهري في الدلالة: تعديل نسخة من struct لا يؤثّر على الأصل، لأن كل إسناد أو تمرير كوسيط بالقيمة ينسخ البيانات كاملة.

مناسب لبيانات صغيرة يكرَّر إنشاؤها كثيرًا (إحداثية، لون، مبلغ) حيث تكلفة النسخ أقل من تكلفة تتبّع مرجع على الكومة (heap). struct لا يدعم الوراثة من struct أو class آخر.

الصياغة

struct TypeName
{
    public Type Field1;
    public Type Field2;
}

📄 مثال

struct Point
{
    public int X;
    public int Y;
    public Point(int x, int y) { X = x; Y = y; }
}

Point p1 = new Point(1, 2);
Point p2 = p1;      // نسخة كاملة مستقلة
p2.X = 99;

Console.WriteLine(p1.X);   // 1 — لم يتأثّر
Console.WriteLine(p2.X);   // 99

أهم النقاط

العنصرالوظيفة
نوع قيميالإسناد والتمرير ينسخ البيانات، لا المرجع
بلا وراثةstruct لا يرث من struct أو class آخر
مُنشئ بلا وسائطالمترجم يولّده تلقائيًا ويصفّر كل الحقول

💡 نصائح عملية

  • استخدم struct للبيانات الصغيرة غير القابلة للتغيير غالبًا؛ class لكل ما هو أكبر أو يحتاج وراثة

⚠️ أخطاء شائعة

  • استخدام struct كبير الحجم بكثرة — نسخه المتكرر أبطأ من تمرير مرجع class واحد

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSHARP الكامل بالعربي.