التعلم بالمثال - المصطلحات (؟ ،: ، إلخ)
-
22-09-2019 - |
سؤال
عندما كنت طفلاً ، هل سبق لك أن سألت والديك عن كيفية تهجئة شيء ما وطلبوا منك أن تبحث عنه؟ كان انطباعي الأول دائمًا ، "حسنًا ، إذا كان بإمكانه البحث عنه ، فلن أحتاج إلى مساعدة تهجئته". (نعم نعم أعرف صوتيات)
... على أي حال ، كنت أنظر فقط إلى بعض التعليمات البرمجية ووجدت مثالًا مثل:
txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;
يمكنني معرفة ما الذي تفعله هذه العملية ، لكن من الواضح أنه لا يمكنني Google؟ أو: ولا يمكنني العثور عليها عند البحث عن "مشغلات C#" ، LINQ ، تعبيرات Lambda ، إلخ. لذلك يجب أن أطرح هذا السؤال السخيف حتى أتمكن من البدء في القراءة عنه.
ما هم هؤلاء المشغلين؟
المحلول
?:
هل المشغل الشرطي, وأفضل طريقة لمعرفة ذلك هي أن نسأل هنا!
condition ? first_expression : second_expression;
إذا كانت الحالة صحيحة ، يتم تقييم التعبير الأول ويصبح النتيجة ؛ إذا كان خطأ ، يتم تقييم التعبير الثاني ويصبح النتيجة. يتم تقييم واحد فقط من تعبيرين على الإطلاق.
من المفيد للغاية قابلية قراءة المهام ، عندما يكون التعبير بأكمله قصيرًا نسبيًا:
string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname
أسهل بكثير وأسرع من:
string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
name = user.Nickname;
}
نصائح أخرى
?
هو مضمّن-if
بيان. هذا يعني أنه إذا checkbox.Checked
هو true
, ، من ثم CharacterCasing.Upper
ستكون قيمة التعبير ، وإلا CharacterCasing.Normal
سوف يكون.
يعمل مثل هذا:
type value = condition ? trueValue : falseValue;
هذا مضمّن إذا كان البيان. "؟" هو رمز IF ، ":" هو لآخر.
ال ؟ يُعرف أيضًا باسم عامل ثلاثي
بالمناسبة ، يحدث ما يمكنك البحث عن "؟:" على ويكيبيديا وتجد هذا.
لاحظ أنه يطلق عليه أحيانًا "المشغل الثلاثي ، نظرًا لأن مشغله الثلاثي الوحيد (3-Argument) بلغات تشبه C.
بالمناسبة. بينما تتعلم C# تحقق من ؟ المشغل أو العامل في بعض الأحيان يكون بديل أفضل بكثير؟ :.
يعتبر:
Console.WriteLine(user.LastName ?? "no last name provided");
ضد:
Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");