تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
null-coalescing operator
#1
بسم الله الرحمن الرحيم
((ربِ اشرح لي صدري ويسر لي أمري وأحلل عقدةً من لساني يفقهوا قولي))


#Null-coalescing operator ( ?? ) in c


احدى الإضافات الجديدة في لغة C# الإصدار السادس وما بعدها

تستخدم كشرط بين جهتين (الجهة اليمنى – الجهة اليسرى) حيث يتم اسناد الجهة اليمنى كناتج في حال كون الجهة اليسرى يساوي null وإلا سيتم اسناد الجهة اليسرى كناتج. بامكانك استخدام (??) في الــ Value Types and Reference Type.





صيغتها كالتالي:
                                                                         Right hand                            Left hand

(output = (if exp is null ) ?? ( assign value to output

مثال/ لو أردت طباعة طول سلسلة نصية يجب التأكد من النص أولاً: قبل استخدام (??)
PHP كود :
string str null;
if (
str != null)
 
  WriteLine(str.Length);
else
 
  WriteLine("Empty"); 


بعد استخدام (??) سيكون الحل بالشكل التالي:
PHP كود :
string str = null;

WriteLine(str.Length ?? "Empty"); 
هنا سيكون الناتج / 0.

ملاحظة/ قيمة الــ Right hand يجب أن تكون بنفس نوع بيانات التعبير الذي يتم تطبيق الشرط عليه في الــ Left hand.
بمعنى لو كتبت الحل أعلاه بالشكل التالي:
PHP كود :
string str null;
WriteLine(str?.Length ?? "zero"); 
في هذه الحالة سوف يحدث خطأ لعدم تساوي الطرفين من حيث نوع البيانات.

مثال آخر/ قبل وبعد استخدام (??):

PHP كود :
var str "Hello";
if (
str != null)
 
  WriteLine(str);
else
 
  WriteLine("null"); 


بعد
PHP كود :
var str "Hello";
var 
res str ?? "null";
WriteLine(res); 

مثال/ Value Type: يجب أن تستخدم Nullable variables أو تعمل casting
PHP كود :
int10;
WriteLine(?? 0); 

استخدام الــــ casting
PHP كود :
int x 10;
WriteLine((int?)?? 0); 

كما لاحظتم أن استخدام الاشياء البسيطة والصغيرة لها أهمية كبيرة في أداء البرنامج من ناحية السرعة والمرونة.
واستخدمنا ايضا عملية اخرى شرحناها سابقا وهي ((?) Null-conditional operator) وضربنا عصفورين بحجر واحد.

والحمد لله رب العالمين
تحياتي لكم ولا تنسونا و والديَّ من صالح دعواتكم
الرد }}}
تم الشكر بواسطة: ابو ليلى , Amir_Alzubidy , sendbad100 , sendbad100 , Anis Gladiator
#2
بارك الله فيك اخي سجاد
و اسأل الله ان يغفر لك و
لوالديك و ان يجعلكم في
جنات النعيم
اللهم آمين
الرد }}}
تم الشكر بواسطة: Sajad , Sajad


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Ternary operator in C#.NET Sajad 3 2,777 23-01-19, 08:22 PM
آخر رد: Sajad
  Null-conditional operator Sajad 2 2,094 21-06-17, 01:48 PM
آخر رد: Sajad

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم