ما هو استخدام "؟؟" [مكرر
سؤال
تكرار ممكن:
ما هو "؟؟" مشغل؟
من فضلك اشرح لي ما هو استخدام "؟؟" في الكود أدناه وما هو "؟؟" يستعمل ل.
if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
{e.description = "يجب ألا يكون تاريخ الطلب في المستقبل." ؛ عودة كاذبة؛ }
الرمز أعلاه في http://nettiers.com/entitylayer.ashx
شكرًا.
المحلول
(هذا مكرر ، ولكن من الصعب البحث عنه ، لذلك أنا سعيد بما يكفي لتقديم هدف آخر لعمليات البحث المستقبلية ...)
انها ال مشغل coalescing فارغ. يقوم بشكل أساسي بتقييم المعامل الأول ، وإذا كانت النتيجة فارغة (إما مرجع فارغ أو القيمة الفارغة لنوع قيمة لاغية) ، فإنه يقوم بتقييم المعامل الثاني. والنتيجة هي أي شيء تم تقييمه أخيرًا ، بفعالية.
لاحظ أنه بسبب ارتباطها ، يمكنك الكتابة:
int? x = E1 ?? E2 ?? E3 ?? E4;
إذا E1
, E2
, E3
و E4
كلها تعبيرات من النوع int?
- سيبدأ بـ E1
والتقدم حتى يجد قيمة غير خالية.
يجب أن يكون المعامل الأول نوعًا غير مريح ، ولكن يمكن أن يكون المعامل الثاني غير قابل للفرق ، وفي هذه الحالة يكون نوع التعبير الكلي غير قابل للرسوم. على سبيل المثال ، لنفترض أن E4 تعبير عن النوع int
(لكن كل ما زالوا لا يزالون int?
ثم يمكنك صنع x
غير قابلة للفرق:
int x = E1 ?? E2 ?? E3 ?? E4;