Null-conditional operator - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم مقالات C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=177) +--- الموضوع : Null-conditional operator (/showthread.php?tid=20806) |
Null-conditional operator - Sajad - 21-06-17 بسم الله الرحمن الرحيم
((رب اشرح لي صدري ويسر لي أمري وأحلل عقدة من لساني يفقهوا قولي))
Null-conditional operator ( ?. ) in C#.NET
هي احدى الإضافات الجديدة في لغة C# الإصدار السادس وما بعدها
وظيفتها الرئيسية هي تفادي احتمالية حدوث الاستثناء (NullReferenceException) في البرنامج الذي تكتبه بالإضافة الى تقليل عدد الاسطر في الكود البرمجي. لنبيّن ذلك بالامثلة قبل وبعد استخدام (operator .? ) لو فرضنا أنه لديك الكلاس التالي: PHP كود : public class Student فلو طلب منك طباعة اسم الأول للطالب فقط وليس الاسم الكامل:
ستقوم بحل السؤال بهذه الطريقة : أولا تتأكد من أن الاسم ليس فارغا (null) ومن ثم تقوم بعملية اقتصاص الجزء الأول من الاسم بالطريقة القديمة كما يلي: PHP كود : if (std.Fullname != null) واذا لم تقم بتطبيق شرط على الاسم وكتبتها بالشكل التالي مباشرة:
PHP كود : var fname = std.Fullname.Substring(0, std.Fullname.IndexOf(" ")); في هذه الحالة سيحدث استثناء من نوع (NullReferenceException) إن كان الاسم (Fullname) فارغاً ، لتفادي ذلك قمنا بكتابة شرط أعلاه.
أما بالطريقة الجديدة فلا حاجة لكتابة شرط للتأكد من الاسم ، ويتم استعمال (.?) بدلاً من كتابة الشرط كما يلي: PHP كود : var fname = std.Fullname?.Substring(0, std.Fullname.IndexOf(" ")); في هذه الحالة سيتم اسناد null الى المتغير fname إن كان الاسم فارغاً بدل حدوث الاستثناء وتوقف البرنامج، وبهذا قمنا بتقليل عدد الاسطر البرمجية بالإضافة الى ذلك تفادينا حدوث توقف للبرنامج.
وبإمكانك استخدام Nested Null-conditional operator: الطريقة القديمة: PHP كود : if (std != null && std.Fullname != null) باستخدام الطريقة الجديدة:
PHP كود : WriteLine(std?.Fullname?.Length); اذاً (.?) يعمل بمثابة شرط بدلاً من استخدام (if) الشرطية . وأيضا سيتم اسناد null بدل الاستثناء بصورة تلقائية.
لا تنوسنا و والديّ من صالح دعواتكم.
RE: Null-conditional operator - silverlight - 21-06-17 الاضافات البسيطة هذه مهمة في اي لغة برمجية بارك الله فيك انا غالبا باستخدم دالة مثل هذه في الفيجوال بيسك PHP كود : Public Function Nullable(Of T)(value As T) As T لكن لدي سؤال سؤالي هل من وجهة نظرك الدالة اعلاه تساوي التعديل الجديد في لغة #C RE: Null-conditional operator - Sajad - 21-06-17 حياك الله اخي العزيز بالتأكيد هي مهمة جدا حيث تسهل عمل المبرمج ويؤثر على سرعة البرنامج وتقلل الاخطاء من المنطلق أعلاه التغيير هذا في لغة C# تعتبر اسرع وافضل بالطبع لكن من حيث المبدأ تستطيع بناء دالة مثلما فعلت حضرتك للتأكد بنفسك من قيم الnull لكن هل تساوي؟ من حيث المبدأ ومن وجهة نظري نعم. أما الاختلاف هذه تكتبها أنت أم التعديل الجديد تكون مدمجة في اللغة. تحياتي لكم ورمضان كريم عليكم |