.NET এর অন্তর্নির্মিত ফ্ল্যাগ এনাম অপারেশন দুর্ভাগ্যক্রমে যথেষ্ট সীমাবদ্ধ। বেশিরভাগ সময় ব্যবহারকারীরা বিটওয়াইজ অপারেশন যুক্তি খুঁজে বের করতে পারেন।
.NET 4-এ, পদ্ধতিটি HasFlag
যুক্ত করা হয়েছিল Enum
যা ব্যবহারকারীর কোড সহজীকরণে সহায়তা করে তবে দুর্ভাগ্যক্রমে এর সাথে অনেকগুলি সমস্যা রয়েছে।
HasFlag
এটি টাইপ-সেফ নয় কারণ এটি কোনও প্রদত্ত এনাম টাইপ নয়, কোনও ধরণের এনাম মান আর্গুমেন্ট গ্রহণ করে।
HasFlag
দ্বিধাহীন, এটি এনাম মান আর্গুমেন্টের দ্বারা প্রদত্ত মান বা সমস্ত ফ্ল্যাগের মধ্যে আছে কিনা তা পরীক্ষা করে। সব কিছু ঠিক আছে।
HasFlag
বরং এটি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে বক্সিং করার প্রয়োজন হয় যা বরাদ্দ দেয় এবং এইভাবে আরও আবর্জনা সংগ্রহের কারণ হয়।
.NET- র পতাকা enums গুলির জন্য সীমিত সহায়তার কারণে আমি ওএসএস লাইব্রেরি Enums.NET লিখেছিলাম যা এই প্রতিটি বিষয়কে সম্বোধন করে এবং পতাকা এনগমগুলির সাথে কাজ করা আরও সহজ করে তোলে।
নীচে কেবলমাত্র নেট নেট ফ্রেমওয়ার্ক ব্যবহার করে তাদের সমতুল্য বাস্তবায়ন সহ কিছু সরবরাহ করা অপারেশন রয়েছে।
পতাকা একত্রিত করুন
.NET flags | otherFlags
Enums.NET flags.CombineFlags(otherFlags)
পতাকা সরান
.NET flags & ~otherFlags
Enums.NET flags.RemoveFlags(otherFlags)
সাধারণ পতাকা
.NET flags & otherFlags
Enums.NET flags.CommonFlags(otherFlags)
ফ্ল্যাগগুলি টগল করুন
.NET flags ^ otherFlags
Enums.NET flags.ToggleFlags(otherFlags)
সমস্ত পতাকা আছে
.NET (flags & otherFlags) == otherFlags
বাflags.HasFlag(otherFlags)
Enums.NET flags.HasAllFlags(otherFlags)
কোন পতাকা আছে
.NET (flags & otherFlags) != 0
Enums.NET flags.HasAnyFlags(otherFlags)
পতাকা পান
.NET
Enumerable.Range(0, 64)
.Where(bit => ((flags.GetTypeCode() == TypeCode.UInt64 ? (long)(ulong)flags : Convert.ToInt64(flags)) & (1L << bit)) != 0)
.Select(bit => Enum.ToObject(flags.GetType(), 1L << bit))`
Enums.NET flags.GetFlags()
আমি এই উন্নতিগুলি। নেট কোর এবং সম্ভবত শেষ পর্যন্ত পুরো নেট নেট ফ্রেমওয়ার্কের সাথে সংহত করার চেষ্টা করছি। আপনি আমার প্রস্তাবটি এখানে দেখতে পারেন ।