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

record

النوع القياسي record record

record معدِّل يُضاف لـ class أو struct يمنحك مساواة قيمة وToString جاهزًا ونسخًا غير مدمّر تلقائيًا — مثالي لأنواع تخزّن بيانات بشكل أساسي.

الصياغة الموقعيّة `record Person(string First, string Last);` تولّد المُنشئ والخصائص في سطر واحد. الخصائص في record class تكون init-only افتراضيًا (غير قابلة للتعديل بعد الإنشاء).

يقارن record كل خاصية بدل مقارنة المرجع كما في class عادي، ويوفّر تعبير with لإنشاء نسخة معدَّلة دون تغيير الأصل.

الصياغة

public record TypeName(Type Prop1, Type Prop2);

📄 مثال

public record Person(string FirstName, string LastName);

var p1 = new Person("سارة", "أحمد");
var p2 = new Person("سارة", "أحمد");

Console.WriteLine(p1 == p2);          // True — مساواة قيمة
var p3 = p1 with { LastName = "سالم" };
Console.WriteLine(p3);                 // Person { FirstName = سارة, LastName = سالم }

أهم النقاط

العنصرالوظيفة
record classالافتراضي — مرجعي، خصائصه init-only
record structقيمي، خصائصه قابلة للتعديل ما لم تُضِف readonly
with { ... }ينسخ الكائن مع تعديل خصائص محدّدة

💡 نصائح عملية

  • استخدم record عندما تكون مهمّة النوع تخزين بيانات مقارنة بقيمتها، لا سلوكًا معقّدًا

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

  • استخدام record لكائنات Entity Framework التي تعتمد على مساواة المرجع لتتبّع الكائنات

خصائص ذات صلة

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