2010-09-21 14 views
10

क्यों अनुमति दे रहा है मैंने यह समझने की कोशिश करते हुए कुछ समय बिताया है कि क्यों मेरा डब्ल्यूपीएफ ऐप एक एनम संपत्ति के लिए डाटाबेसिंग नहीं कर रहा था और यही कारण है।सी # एक अमान्य enum मान

static void Main(string[] args) 
{ 
    MyEnum x = 0; 
    Console.WriteLine(x.ToString()); 
    Console.ReadLine(); 
} 

public enum MyEnum 
{ 
    First = 1, 
    Second = 2 
} 

अनिवार्य रूप से समस्या वर्ग मैं के लिए बाध्य किया गया था के निर्माता में enum संपत्ति के लिए निर्धारित नहीं डिफ़ॉल्ट मान था कि था, तो यह शून्य करने के लिए दोषी था।

क्या कोई ऐसा है कि मैं सी # कंपाइलर को बता सकता हूं कि मैं इसे वैध मानों (और सबसे कम मूल्य पर डिफ़ॉल्ट) स्वीकार करना चाहता हूं? मैं नहीं चाहता कि मेरी संपत्ति अमान्य मानों को स्वीकार करे, और मैं enum का उपयोग करने वाली प्रत्येक संपत्ति के लिए सेटर कोड लिखना नहीं चाहता हूं।

उत्तर

10

नहीं, दुर्भाग्य से नहीं।

सी # एनम्स सिर्फ नामों की संख्या हैं, वास्तव में - बिल्कुल कोई सत्यापन नहीं है। मैं मानता हूं कि यह देखना बहुत अच्छा होगा, साथ ही व्यवहार के साथ enums (जावा में)। मैंने यह सुझाव देने के लिए कुछ भी नहीं सुना है कि यह जल्द ही आ रहा है हालांकि :(

ध्यान दें कि किसी प्रकार का डिफ़ॉल्ट मान हमेशा "सभी शून्य बिट्स" द्वारा दर्शाया गया मान होगा - इसमें गोल करने का कोई तरीका नहीं है टाइप सिस्टम, वास्तव में। तो या तो आपको इसे एक समझदार डिफ़ॉल्ट मान बनाने की ज़रूरत है, या आपको इसे वैध प्रणाली (जैसे संदर्भ प्रकारों के लिए शून्य के विरुद्ध परीक्षण) में भी स्पष्ट रूप से परीक्षण करना होगा।

बस स्पष्ट होना , मेरा मानना ​​है कि ऐसे समय होते हैं जब "संख्याओं के लिए नाम" प्रकार का प्रकार लगता है ... लेकिन मुझे लगता है कि मूल्यों का वास्तविक रूप से प्रतिबंधित सेट और भी उपयोगी होगा।

+1

वाह, मुझे अंत में कुछ मिला है मुझे लगता है कि इसमें बेहतर है सी # से डेल्फी :) –

संबंधित मुद्दे