ভেবেছিল আমার মতো এখানে হোঁচট খাচ্ছে এমন অন্যান্য লোকদের পক্ষে এটি কার্যকর হতে পারে।
আপনি যে কোনও এনাম মানগুলি কীভাবে পরিচালনা করছেন সে সম্পর্কে সতর্কতা অবলম্বন করুন আপনার মান == 0 নির্ধারণ করতে পারে (কখনও কখনও এটি কোনও এনামের জন্য অজানা বা নিষ্কলঙ্ক অবস্থা থাকতে সহায়ক হতে পারে)। এই বিট ম্যানিপুলেশন অপারেশনের উপর নির্ভর করার সময় এটি সমস্যার সৃষ্টি করে।
এছাড়াও যখন আপনার কাছে এনাম মান থাকে যা 2 টি মানের অন্যান্য পাওয়ারের সংমিশ্রণ হয়, যেমন
public enum Colour
{
None = 0, // default value
RED = 2,
BLUE = 4,
GREEN = 8,
YELLOW = 16,
Orange = 18 // Combined value of RED and YELLOW
}
এই ক্ষেত্রে এটিগুলির মতো কোনও এক্সটেনশন পদ্ধতি কার্যকর হতে পারে:
public static Colour UnSet(this Colour states, Colour state)
{
if ((int)states == 0)
return states;
if (states == state)
return Colour.None;
return states & ~state;
}
এবং সমতুল্য ইসসেট পদ্ধতিটিও সম্মিলিত মানগুলি পরিচালনা করে (কিছুটা হলেও একটি হ্যাকি পদ্ধতিতে)
public static bool IsSet(this Colour states, Colour state)
{
// By default if not OR'd
if (states == state)
return true;
// Combined: One or more bits need to be set
if( state == Colour.Orange )
return 0 != (int)(states & state);
// Non-combined: all bits need to be set
return (states & state) == state;
}