بسم الله الرحمن الرحيم
((ربِ اشرح لي صدري ويسر لي أمري وأحلل عقدةً من لساني يفقهوا قولي))
#Null-coalescing operator ( ?? ) in c
احدى الإضافات الجديدة في لغة C# الإصدار السادس وما بعدها
تستخدم كشرط بين جهتين (الجهة اليمنى – الجهة اليسرى) حيث يتم اسناد الجهة اليمنى كناتج في حال كون الجهة اليسرى يساوي null وإلا سيتم اسناد الجهة اليسرى كناتج. بامكانك استخدام (??) في الــ Value Types and Reference Type.
صيغتها كالتالي:
تستخدم كشرط بين جهتين (الجهة اليمنى – الجهة اليسرى) حيث يتم اسناد الجهة اليمنى كناتج في حال كون الجهة اليسرى يساوي null وإلا سيتم اسناد الجهة اليسرى كناتج. بامكانك استخدام (??) في الــ Value Types and Reference Type.
صيغتها كالتالي:
Right hand Left hand
مثال/ لو أردت طباعة طول سلسلة نصية يجب التأكد من النص أولاً: قبل استخدام (??)
هنا سيكون الناتج / 0.
ملاحظة/ قيمة الــ 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");
ملاحظة/ قيمة الــ 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 كود :
int? x = 10;
WriteLine(x ?? 0);
استخدام الــــ casting
PHP كود :
int x = 10;
WriteLine((int?)x ?? 0);
كما لاحظتم أن استخدام الاشياء البسيطة والصغيرة لها أهمية كبيرة في أداء البرنامج من ناحية السرعة والمرونة.
واستخدمنا ايضا عملية اخرى شرحناها سابقا وهي ((?) Null-conditional operator) وضربنا عصفورين بحجر واحد.
والحمد لله رب العالمين
تحياتي لكم ولا تنسونا و والديَّ من صالح دعواتكم