منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : null-coalescing operator
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم
((ربِ اشرح لي صدري ويسر لي أمري وأحلل عقدةً من لساني يفقهوا قولي))


#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) وضربنا عصفورين بحجر واحد.

والحمد لله رب العالمين
تحياتي لكم ولا تنسونا و والديَّ من صالح دعواتكم