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

required

الأعضاء المطلوبة (required) required

منذ C# 11، يفرض المُعدِّل required على المستدعي تعيين قيمة للخاصية عبر مُهيِّئ كائن، وإلا يرفض المترجم الترجمة.

بدل الاعتماد على مُنشئ يستقبل كل القيم الإلزامية، يمكن تعليم خاصية بـ required فيرفض المترجم أي إنشاء للكائن لا يعيّن قيمة لها عبر object initializer. لا يُغني required عن جعل النوع non-nullable — يمكن تعيين required لقيمة null صراحةً إن كان النوع nullable.

إن أردت مُنشئًا يضبط كل الأعضاء المطلوبة نيابة عن المستدعي (فلا يُطلَب منه initializer)، أضف الخاصية SetsRequiredMembers على ذلك المُنشئ.

الصياغة

public Type PropName { get; init; } required;
// أو بترتيب المُعدِّلات:
required Type PropName { get; init; }

📄 مثال

class Person
{
    public required string FirstName { get; init; }
}

var p = new Person { FirstName = "سارة" };   // إلزامي
// var bad = new Person();   // خطأ ترجمة: FirstName غير معيَّنة

أهم النقاط

العنصرالوظيفة
requiredيفرض تعيين الخاصية عبر object initializer عند الإنشاء
SetsRequiredMembersعلى مُنشئ يعفي المستدعي من initializer لأنه يضبط كل المطلوب بنفسه
متوفّرة منذC# 11

💡 نصائح عملية

  • استخدمها كبديل أخفّ من مُنشئ طويل عندما يكون لديك عدّة خصائص إلزامية في نوع بسيط

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

  • الظن أن required يمنع القيمة null — required يفرض التعيين فقط، ويمكن تعيين null صراحةً لخاصية nullable required

خصائص ذات صلة

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