MSDN documentationFlag
विशेषता के लिए की शक्ति के बिना झंडा enums का कहना है कि आप करना चाहिए:दो मानों
दो की शक्तियों में शुमार स्थिरांक को परिभाषित करें, कि, है 1, 2, 4, 8, और इतने पर । इसका मतलब है कि संयुक्त गणना स्थिरांक में व्यक्तिगत झंडे ओवरलैप नहीं होते हैं।
... और निश्चित रूप से मैं हमेशा ऐसा करने की याद रखने की कोशिश करता हूं। हालांकि, कुछ भी नहीं है कि लागू करने और अगर आप सिर्फ 'बेसिक' जिस तरह की तरह एक गणन बनाने ...
[Flags]
public enum BrokenEnum
{
None,
FirstOption,
SecondOption,
ThirdOption
}
... यह अपेक्षा के अनुरूप व्यवहार नहीं होंगे। इसका मुकाबला करने के लिए, मैं किसी प्रकार का स्थैतिक कोड विश्लेषण (जैसे FxCop) की तलाश में हूं जो मुझे चेतावनी दे सकता है जब मेरे कोड में उपरोक्त की तरह एक enum मौजूद है। मुझे लगता है कि निकटतम ऐसी चेतावनी 'CA1008: Enums should have zero value' थी - जो झंडे की गणना को सही ढंग से डिजाइन करने में भी सहायक है लेकिन पर्याप्त नहीं है।
मेरे कोड में ग़लत ढंग से डिज़ाइन किए गए झंडे को खोजने का सबसे अच्छा तरीका क्या है? अधिक स्वचालित समाधान, बेहतर।
मुझे लगता है कि मुझे स्थिर कोड विश्लेषण के 'बॉक्स के अंदर' नहीं सोचना चाहिए था। इस तरह एक यूनिट परीक्षण बहुत आसान होना चाहिए और मुझे लगभग एक ही अंतिम परिणाम देना चाहिए। –