أبسط طريقة للتحقق مما إذا كانت متغير معين يساوي قيمة من قائمة في C#
عند العمل مع C#، من الشائع الحاجة للتحقق مما إذا كان متغير ما يطابق واحدة من عدة قيم. السؤال هنا هو، “ما هو أكثر الطرق إيجازًا لتحقيق ذلك؟” بشكل خاص، سترغب في تجنب تكرار المتغير الذي تتحقق ضده عدة مرات، مع الابتعاد أيضًا عن تنفيذا طويلة التركيب مثل المصفوفات أو القوائم عندما لا يكون ذلك ضروريًا.
في هذه المدونة، سنستكشف حلولاً مختلفة لمعرفة ما إذا كان المتغير يساوي واحدة من مجموعة القيم بكفاءة باستخدام المنطق البولياني.
النهج الشائع
غالبًا ما قد يلجأ المطورون إلى استخدام عامل OR المنطقي (||
) لإجراء مقارنة مباشرة مثل هذه:
int baseCase = 5;
bool testResult = baseCase == 3 || baseCase == 7 || baseCase == 12 || baseCase == 5;
بينما يعمل هذا الحل، إلا أنه يتطلب كودًا متكررًا لكل قيمة تحتاج إلى التحقق منها. كما ترى، إذا كان لديك قائمة طويلة من القيم، يمكن أن يصبح الكود سريعًا مرهقًا وعرضة للأخطاء.
إعادة التفكير في نهجك
كان هناك استفسار ما إذا كانت هناك طريقة لتغليف هذا المنطق بشكل أكثر إيجازًا دون استخدام تعبيرات طويلة أو ميزات .NET 3.5. ومن المثير للاهتمام، أنك ستود تجنب استخدام الهياكل التي تتطلب مصفوفات. دعنا نفحص طريقة أكثر تناسقًا.
استخدام Contains
إذا كنت لا تزال مهتمًا بطريقة أكثر كفاءة للتحقق من القيم المتعددة، واحدة من أفضل الطرق تتمثل في الاستفادة من طريقة Contains
، على الرغم من أنها تتضمن استخدام مصفوفة أو قائمة. إليك كيف يمكنك كتابتها:
bool testResult = new int[] { 3, 7, 12, 5 }.Contains(baseCase);
لماذا تستخدم Contains
؟
تبسط هذه الطريقة كودك بعدة طرق رئيسية:
- سهولة القراءة: تعزز وضوح الكود. يمكن لأي شخص يقرأ كودك أن يدرك بسهولة ما تحاول القيام به دون فك رموز عملية OR معقدة.
- المرونة: يمكنك تعديل قائمة القيم التي تتحقق منها بسرعة دون تغيير هيكل منطقيتك.
- القابلية للتوسع: أضف أو أزل عناصر في شرطك دون مخاوف بشأن زيادة حجم الكود أو التكرار.
اعتبارات لمستخدمي .NET 2.0
نظرًا للقيود المفروضة على استخدام إطار .NET 2.0، فإن بعض الميزات المتاحة في الإصدارات اللاحقة ليست متاحة. ومع ذلك، فإن تنفيذ Contains
المشارك أعلاه يعمل بشكل جيد ضمن .NET 2.0. تبقى التالية كحل بسيط ولكنه فعال:
bool b = new int[] { 3, 7, 12, 5 }.Contains(5);
الخاتمة
يمكن إدارة تحديد ما إذا كان المتغير يساوي أي قيمة من مجموعة بشكل أنيق باستخدام طريقة Contains
ضمن مصفوفة. إنها تقدم حلاً أنيقًا ومرتبًا مع الحفاظ على قراءة الكود وتقليل خطر الأخطاء الناتجة عن التعبيرات المنطقية الطويلة. تذكر، عند تطوير سيناريوهات منطقية أكثر تعقيدًا في C#، يمكن أن تدعم هذه الطرق كودًا نظيفًا وقابلًا للصيانة يعمل بشكل جيد حتى على الإطارات الأقدم مثل .NET 2.0.
لذا في المرة القادمة التي تحتاج فيها إلى التحقق من متغير مقابل قائمة، احفظ هذه الاستراتيجيات في ذهنك لكود أنظف!