मैं एक वेब सेवा विधि पर काम कर रहा था जो पैरामीटर के रूप में इन्स की एक सरणी प्राप्त करेगा, और फिर, विधि के अंदर, मैंने सरणी में मूल्यों को enum मानों में परिवर्तित कर दिया, और उन्हें संग्रहीत किया एक enum सूची। हालांकि, जब कोई मूल्य enum में नहीं है, तो यह किसी भी समस्या के साथ enum सूची में जोड़ा जाता है। नहीं InvalidCastException
, कुछ भी नहीं।सी # एनम सरणी एक गलत मान को स्वीकार कर रहा है
static class Program
{
static void Main(string[] args)
{
List<TestValues> values = new List<TestValues>() {
TestValues.Value1,
TestValues.Value2,
(TestValues)15
};
foreach (var val in values)
Console.WriteLine(val);
Console.Read();
}
enum TestValues
{
Value1 = 2,
Value2 = 4,
Value3 = 8
}
}
जब मैंने इसे चलाने के लिए, उत्पादन होता है:: मैं एक परीक्षण परियोजना है कि इस तरह दिखता है बना
Value1
Value2
15
अपने वेब सेवा के लिए, मैं एक सत्यापन को लागू करेंगे, तो यह hapen कभी नहीं होगा बिलकुल। लेकिन ... यह अजीब है! रनटाइम InvalidCastException
या ArgumentOutOfRangeException
या कुछ समान नहीं फेंकना चाहिए? चूंकि मुझे enums (और int मान नहीं) की एक सूची मिली है, इसलिए मैं मानों को enum के मानों तक सीमित करना चाहता हूं (यही एक enum के लिए है)।
क्या मुझे कुछ याद आ रही है? क्या यह एक .NET बग है, एक सी # बग है या क्या ऐसा कुछ है जिसे मैं enums के साथ नहीं जानता?
गड़बड़ प्रश्न के लिए +1 – Tigran
पढ़ें यह एक: [क्यों अमान्य enum मान के पूर्णांक कास्टिंग करता है नहीं अपवाद फेंक?] [1] [1]: http://stackoverflow.com/ प्रश्न/6413804/क्यों-करता-कास्टिंग-इंट-टू-अमान्य-एनम-वैल्यू-न-फेंक-अपवाद – vinayvasyani