تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Ternary operator in C#.NET
#1
بسم الله الرحمن الرحيم


من الامور المهمة التي يجب على المبرمج ان يأخذها بعين الاعتبار استعمال بعض البدائل والتقنيات الحديثة التي يتم ادخالها او تطويرها في اللغة.

ومن هذه الامور التي يجب على المبرمج استعمالها او الاستعانة بها هي العبارات المختصرة التي توفرها اللغة بديلا لعبارات اخرى او اكواد اخرى.

وبما أننا نتحدث عن لغة سي شارب C#.NET فهذه اللغة في تطور مستمر حيث تعتبر حاليا اللغة الاولى لشركة مايكروسوفت فمن خلال لغة سي شارب تستطيع العمل في عدة مجالات منها:

1- تطبيقات سطح المكتب.
2- تطبيقات الويب.
3- تطبيقات الهاتف النقال.
4- ومجالات اخرى عديدة.


Ternary operator(:?): هي عبارة مختصرة بديلة عن عبارة if - else (يمكن استعمالها بدلا من if - else) وتكون صيغتها كالتالي:

PHP كود :
Data_type variable condition True False

حيث تقابل صيغة if - else التالية:

PHP كود :
if (condition)
{
true;
}
else
{
false;


المثال التالي يبيّن كيفية استعمال Ternary operator بديلا عن صيغة if - else :
PHP كود :
int grade 90;

 
           // Ternary operator
 
           #region Simple ternary operator
 
           // using if else
 
           if (grade >= 50)
 
           {
 
               Console.WriteLine("He passed the exam");
 
           }
 
           else
            
{
 
               Console.WriteLine("Did not pass the exam");
 
           }
 
           // using ternary operator
 
           var result grade >= 50 "He passed the exam" "He didn't pass the exam";
 
           Console.WriteLine(result); 

الفائدة من استخدام هكذا مختصرات هي تقليل الاسطر البرمجية لكن في المقابل ستزداد الكود تعقيدا والسبب:

تخيّل معي استخدام عبارة if  المتداخلة و if - else المركبة كيف ستكون لو استبدلناها بـ Ternary operator؟

كل الامثلة بالاضافة الى المثال المذكور تجدونه في هذا الرابط على Github:



تحياتي لكم Smile
الرد }}}
#2
السلام عليكم

شكراَ لك 

اشتقنا لمقالاتك اخي / سجاد

لاتطول الغيبه علينا 
نتظر الجديد كما عهدنا منك 
الرد }}}
تم الشكر بواسطة: Sajad
#3
مقال جميل جداً شكراً لك اخى Sajad
واحببت ان اقوم باضافة رداً بتلك المعلومات
فاتمنا تقبل منى هذه الاضافة 

فى البداية ساجعل المقالة تخص الـ C# وكذلك الـ VB.Net

بخصوص طريقة التعامل مع IF و ELSE الطريقة المذكورة هنا
تذكرني دائماً بلغة PHP وكيف كانت لها مميزات كثيرة كاستفادة من هذا الامر

على اى حال ادخل فى مضمون الشرح 

فى الـ C#
الكتابة الاعتيادية لـ IF و Else هي
كود :
           int ii = 0;
           if (ii == 0)
           {
               // Run Code True;
           }
           else
           {
               // Run Code False;
           }

فى الـ VB.NET
الكتابة الاعتيادية لـ IF و Else هي
كود :
       Dim ii As Integer = 0
       If ii = 0 Then
           ' Run Code True
       Else
           ' Run Code False
       End If

فى الـ C# 
عند التعامل مع IF و Else من خلال ? : يكون الكود بهذا الشكل
كود :
           int ii = 0;
           int Nm = ii == 0 ? 0 : -1;
           // Run Nm

فى الـ VB.NET 
عند التعامل مع IF و Else من خلال IIF يكون الكود بهذا الشكل
كود :
       Dim ii As Integer = 0
       IIf(ii = 0, 0, -1)
       ' Run ii

نلاحظ التالى بان ? : هى نفسها IIF لكن بكل لغة تكتب كما تم شرحه بالاعلى
طيب الان كيفية يمكن عمل شرط تحقق واحد داخل الاخر

فى لغة C#
يمكن عمل كود التحقق واحد داخل الاخر كما يالى
فى البداية الكود الافتراضى الخاص بـ IF Else
كود :
           int ii = 0;
           int kk = 1;
           if (ii == 0)
           {
               if(kk == 1)
               {
                   // Run Code True;
               }
               else
               {
                   // Run Code False;
               }
           }
           else
           {
               // Run Code False;
           }

لاحظ الان بطريقة ? : لنفس الكود كيف سيكون الشكل
كود :
           int ii = 0;
           int kk = 1;
           int Nm = ii == 0 ? (kk == 1 ? 1 : 0) : -1;
           // Run Nm;

قمت بوضع شرط التحقق الاخر بين (  ) لكي تتمكن من الملاحظة 

ولا يلزم وضعها فهى اختياري فيمكنك استخدامه بهذا الشكل
كود :
           int ii = 0;
           int kk = 1;
           int Nm = ii == 0 ? kk == 1 ? 1 : 0 : -1;
           // Run Nm;

فى لغة VB.NET
يمكن عمل كود التحقق واحد داخل الاخر كما يالى
فى البداية الكود الافتراضى الخاص بـ IF Else
كود :
       Dim ii As Integer = 0
       Dim kk As Integer = 1
       If ii = 0 Then
           If kk = 1 Then
               ' Run Code True
           Else
               ' Run Code False
           End If
       Else
           ' Run Code False
       End If

لاحظ الان بطريقة IIF لنفس الكود كيف سيكون الشكل
كود :
       Dim ii As Integer = 0
       Dim kk As Integer = 1
       IIf(ii = 0, IIf(kk = 1, 1, 0), -1)

طبعاً هنا بخصوص استخدام (   ) فهى الزامي يجب استخدامها

الان بعد ما عرفنا كيف استخدام IF و Else فردي ومتعدد بداخل بعض
فالان الصورة الكاملة اصبحت مبسطة حتى واذا كنت تريد جعل اكثر من 2 من IF و Else داخل بعضهم البعض

وبالنهاية اتمنى ان لا اكون مخطاء فى شئ
او سهوت عن شئ بالنهاية نحن بشر

تحياتى لصاحب الموضوع وللجميع
وتمنياتى للجميع كل التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: sendbad100 , Sajad , Sajad
#4
السلام عليكم 

حياك الله اخي sendbad100 


شكرا على الاضافة القيمة اخي elgokr جزاك الله خيرا كفيت و وفيت.


الامثلة على شرط التحقق واحدة داخل الاخرى باستخدام Ternary Operator موجودة في المثال على GitHub

وتسمى:

1- Nested if.
2- Compound if.


تحياتي لكم
الرد }}}
تم الشكر بواسطة: sendbad100 , elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  null-coalescing operator Sajad 1 1,872 17-07-17, 02:16 PM
آخر رد: Amir_Alzubidy
  Null-conditional operator Sajad 2 2,097 21-06-17, 01:48 PM
آخر رد: Sajad

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


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