नहीं, संकलन-समय की जांच नहीं है - यह स्विच/केस होना वैध है जो केवल कुछ नामों को नियंत्रित करता है। यह संभव होगा, लेकिन इसमें कुछ समस्याएं हैं।
सबसे पहले, यह "नाम" मूल्यों से कोई भी नहीं पूरी तरह से वैध (दुर्भाग्य से) एक enum मूल्य के लिए है:
enum Foo
{
Bar = 0,
Baz = 1
}
...
Foo nastyValue = (Foo) 50;
यह देखते हुए कि किसी भी मूल्य स्विच/मामले के भीतर संभव है, संकलक यह नहीं पता कि आप एक अनाम मूल्य को संभालने का प्रयास करने का मतलब नहीं था।
दूसरा, यह Flags
enums के साथ अच्छी तरह से काम नहीं करेगा - संकलक वास्तव में नहीं जानता कि कौन से मान सुविधाजनक संयोजन होने के लिए हैं। यह अनुमान लगा सकता है, लेकिन यह थोड़ा सा मुश्किल होगा।
तीसरा, यह हमेशा आप जो चाहते हैं वह हमेशा नहीं होता - कभी-कभी आप वास्तव में केवल कुछ मामलों का जवाब देना चाहते हैं। मैं एक उचित नियमित आधार पर चेतावनियों को दबाना नहीं चाहता हूं।
आप इसे ऊपर की ओर देखने के लिए Enum.IsDefined
का उपयोग कर सकते हैं, लेकिन यह अपेक्षाकृत अक्षम है।
मैं मानता हूँ कि यह सब एक दर्द का एक सा है - enums एक बुरा क्षेत्र का एक सा है, जब यह नेट :(
स्रोत
2012-09-21 13:04:09
की बात आती है कृपया सी ++ Cxyz-चेतावनी के साथ परिचित नहीं उन लोगों के लिए चेतावनी की व्याख्या कर रहे हैं –
उन्हें एमएसडीएन में अच्छी तरह से समझाया गया है। कुछ शब्दों में, सी ++ कोड में यदि आप उन्हें सक्षम करते हैं, तो कुछ गणना के लिए "स्विच" का उपयोग करें, और कुछ गणना मूल्यों को अलग करना भूलें (अलग "केस" में) आपको प्राप्त होगा संकलन के दौरान एक चेतावनी – Alek86