سؤال

فيما يلي بعض الأسئلة التي جمعتها بخصوص تحديد الخروج ...

  1. هل هناك أي سبب لاستخدام تحديد الخروج في VB.NET؟
  2. هل السبب له علاقة بالأداء؟
  3. هل تحديد الخروج يساوي break;?

مثال 1

Select case Name
case "Mary"
'...
case "John"
'...
case else

end select

مثال 2

Select case Name
case "Mary"
'...
exit select

case "John"
'...
exit select

case else

end select
هل كانت مفيدة؟

المحلول

إنه ليس مثل استخدام break الكلمة الرئيسية مع switch بيانات من لغات تشبه C.مع switch, ، إذا قمت بحذف التحكم في الكسر فسوف ينتقل إلى الحالة التالية.مع فيجوال بيسك Select, ، لا تسقط السيطرة؛أ break ضمني بالفعل.

ومع ذلك، يمكنك استخدامه بمثابة شرط حماية، لتجنب الحاجة إلى تداخل التعليمات البرمجية على مستوى آخر في ملف if حاجز.على سبيل المثال:

Select Case SomeEnumVar
    Case SomeEnum.SomeValue1
         If Not SomeCondition Then Exit Select
         'Do something
    Case SomeEnum.SomeValue2
         'Do something else
    Case Else
         'Default case
End Select

هذا أجمل قليلاً من هذا الكود المكافئ:

Select Case SomeEnumVar
    Case SomeEnum.SomeValue1
         If SomeCondition Then
             'Do something
         End If
    Case SomeEnum.SomeValue2
         'Do something else
    Case Else
         'Default case
End Select

من المؤكد تقريبًا أن أي اختلاف في الأداء بين هاتين العينتين غير مهم مقارنة بالعوامل الأخرى.

أحد الاستخدامات الأخرى هو إذا كان لديك الكثير من الحالات، وتم وضع إحدى الحالات بحيث تعني المطابقة أنك تريد التوقف عن التحقق من جميع الحالات الأخرى.يحدث هذا بالفعل، وبالتالي قد يكون لديك بيان حالة فارغ هناك.ولكن يمكنك أيضًا إضافة تحديد خروج لتوضيح للمشرفين أنك تتوقع ألا تفعل هذه الحالة أي شيء آخر.

نصائح أخرى

حسنًا...إنه مثل استخدام goto ...بمجرد العثور على الحالة الصحيحة، لن يكون هناك أي فائدة في "الخروج" من الحالة لأنه في Visual Basic سيتم الخروج.في C#، تحتاج إلى الخروج من الحالة (في هذه الحالة، مع فترة استراحة).

النقطة المهمة هي أنه يمكنك استخدامه في منتصف نطاق الحالة، مثل:

Case 1
   Do something
   Do something
   Evaluate
      exit select
   Else
      Do something

إنه أمر قبيح، لكن يمكنك فعل ذلك...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top