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


Null-conditional operator ( ?. ) in C#.NET


هي احدى الإضافات الجديدة في لغة C# الإصدار السادس وما بعدها
وظيفتها الرئيسية هي تفادي احتمالية حدوث الاستثناء (NullReferenceException) في البرنامج الذي تكتبه بالإضافة الى تقليل عدد الاسطر في الكود البرمجي.
لنبيّن ذلك بالامثلة قبل وبعد استخدام (operator .? )


لو فرضنا أنه لديك الكلاس التالي: 
PHP كود :
public  class Student
{
 
   public  string Fullname getset; }
 
   public  int Age getset; }


فلو طلب منك طباعة اسم الأول للطالب فقط وليس الاسم الكامل:

ستقوم بحل السؤال بهذه الطريقة :

أولا تتأكد من أن الاسم ليس فارغا (null) ومن ثم تقوم بعملية اقتصاص الجزء الأول من الاسم بالطريقة القديمة كما يلي:
PHP كود :
if (std.Fullname != null)
{
 
   var fname std.Fullname.Substring(0std.Fullname.IndexOf(" "));
 
   WriteLine(fname);
}
else
 
   WriteLine("Fullname is null"); 

واذا لم تقم بتطبيق شرط على الاسم وكتبتها بالشكل التالي مباشرة:
PHP كود :
var fname std.Fullname.Substring(0std.Fullname.IndexOf(" "));
WriteLine(fname); 

في هذه الحالة سيحدث استثناء من نوع (NullReferenceException) إن كان الاسم (Fullname) فارغاً ، لتفادي ذلك قمنا بكتابة شرط أعلاه.

 
أما بالطريقة الجديدة فلا حاجة لكتابة شرط للتأكد من الاسم ، ويتم استعمال (.?) بدلاً من كتابة الشرط كما يلي:
PHP كود :
var fname std.Fullname?.Substring(0std.Fullname.IndexOf(" "));
WriteLine(fname); 

في هذه الحالة سيتم اسناد null الى المتغير fname إن كان الاسم فارغاً بدل حدوث الاستثناء وتوقف البرنامج، وبهذا قمنا بتقليل عدد الاسطر البرمجية بالإضافة الى ذلك تفادينا حدوث توقف للبرنامج.


وبإمكانك استخدام Nested Null-conditional operator:


الطريقة القديمة:
PHP كود :
if (std != null && std.Fullname != null)
 
  WriteLine(std.Fullname.Length);
else
 
  WriteLine("Fullname is null"); 

باستخدام الطريقة الجديدة:
PHP كود :
WriteLine(std?.Fullname?.Length); 
اذاً (.?) يعمل بمثابة شرط بدلاً من استخدام (if) الشرطية . وأيضا سيتم اسناد null بدل الاستثناء بصورة تلقائية.

لا تنوسنا و والديّ من صالح دعواتكم.
الرد }}}
تم الشكر بواسطة: silverlight , ابو ليلى


الردود في هذا الموضوع
Null-conditional operator - بواسطة Sajad - 21-06-17, 02:29 AM
RE: Null-conditional operator - بواسطة silverlight - 21-06-17, 03:23 AM
RE: Null-conditional operator - بواسطة Sajad - 21-06-17, 01:48 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Ternary operator in C#.NET Sajad 3 3,060 23-01-19, 08:22 PM
آخر رد: Sajad
  null-coalescing operator Sajad 0 2,100 17-07-17, 12:08 PM
آخر رد: Sajad

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


يقوم بقرائة الموضوع: