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 الكامل بالعربي.