سؤال

تكرار ممكن:
ما هو "؟؟" مشغل؟

من فضلك اشرح لي ما هو استخدام "؟؟" في الكود أدناه وما هو "؟؟" يستعمل ل.

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top