سؤال

هل سيكون هناك فرق في السرعة بين

if (myInt == CONST_STATE1)

و

if (myEnum == myENUM.State1)

شركة#؟

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

المحلول

في C # تتضمن التعدادات وفي مبطنة لتكون الثوابت من قبل المجمع على أي حال، وبالتالي فإن الفائدة هي متاحة ضوح

نصائح أخرى

الشيء الذي يجب توخي الحذر بشأنه عند استخدام Enums هو عدم استخدام أي من العمليات التي تتطلب التفكير (أو استخدامها بحذر).على سبيل المثال:

  1. myEnumValue.ToString().
  2. التعداد.تحليل ()
  3. التعداد.IsDefined()
  4. التعداد.GetName ()
  5. التعداد.GetNames ()

في حالة الثوابت لا يوجد خيار القيام بأي عمليات تتطلب الانعكاس.ومع ذلك، في حالة التعدادات فإنه يفعل.لذلك عليك أن تكون حذرا مع هذا.

لقد رأيت تقارير الملف الشخصي حيث استغرقت العمليات المتعلقة بالتحقق من صحة التعداد/الانعكاسات ما يصل إلى 5% من وقت وحدة المعالجة المركزية (سيناريو يتم فيه إجراء عمليات التحقق من صحة التعداد في كل استدعاء لأسلوب واجهة برمجة التطبيقات).يمكن تقليل ذلك بشكل كبير عن طريق كتابة فصل يخزن مؤقتًا نتائج انعكاس أنواع التعداد المستخدمة.

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

وأيضا، وأنا لست متأكد من أنك تحتاج للقلق حول هذا على الإطلاق. فإنه يبدو وكأنه الأمثل سابق لأوانه. أنا متأكد من أنه في أي نظام، وهناك اختناقات أكبر من المقارنات التعداد. :)

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