سؤال

عندما كنت طفلاً ، هل سبق لك أن سألت والديك عن كيفية تهجئة شيء ما وطلبوا منك أن تبحث عنه؟ كان انطباعي الأول دائمًا ، "حسنًا ، إذا كان بإمكانه البحث عنه ، فلن أحتاج إلى مساعدة تهجئته". (نعم نعم أعرف صوتيات)

... على أي حال ، كنت أنظر فقط إلى بعض التعليمات البرمجية ووجدت مثالًا مثل:

 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");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top