c# - Method parameter with strongly typed Enum type -


निम्न कोड पर विचार करें

  enum क्षैतिज एलाइमेंट {बाएं, मध्य, राइट}; Enum VerticleAnignment {शीर्ष, मध्य, नीचे}; फ़ंक्शन आउटपुटइनाममूल्य (प्रकार एंउम टाइप) {foreach (Enum.GetNames में स्ट्रिंग का नाम (typeof (enumType))) {Console.WriteLine (नाम); }}  

कौनसा कहा जा सकता है

  आउटपुट एन्मवैल्यूज़ (टाइपफ (हॉरिज़ॉटल एलाइमेंट)); आउटपुटइनाममूल्य (टाइपफ (वर्टिकल एलाइमेंट));  

लेकिन मैं अनजाने में कॉल कर सकता हूं, उदाहरण के लिए

  आउटपुटइन्यूमवैल्यूज़ (टाइपफ (इंट));  

और यह संकलन करेगा लेकिन एनोम में रनटाइम पर असफल हो जायेगा। गेटनाम ()

समय के संकलन में इस प्रकार की समस्या को पकड़ने के लिए विधि हस्ताक्षर लिखने का कोई तरीका - यानी केवल एंटम प्रकार को आउटपुट एनाम वॉल्यूम में स्वीकार कर रहा है?

प्रत्येक एंम प्रकार केवल एक पूर्णांक है (जो 8-, 16-, 32- या 64-बिट और हस्ताक्षरित या अहस्ताक्षरित)। आप किसी भी एंम प्रकार के पूर्णांक को 0 डाल सकते हैं, और यह एक ऐसा मान बन जाएगा जो स्थिर रूप से एन्यूम में टाइप किया जाता है।

इसके अलावा, आपके पास एक प्रकार का पैरामीटर हो सकता है Enum यह सुनिश्चित करने के लिए कि वास्तविक enum प्रकार के बिना, केवल enum मान पारित किए जाते हैं।

इस प्रकार, मेरा समाधान इस प्रकार दिखता है:

  सार्वजनिक स्थिर शून्य आउटपुटइनाममूल्य (उदाहरण के लिए) {foreach (Enum.GetNames में स्ट्रिंग का नाम (उदाहरण। GetType ())) {Console.WriteLine (name); }}  

और उसके बाद:

  आउटपुट एनाममूल्य ((क्षैतिज एलाइमेंट) 0); आउटपुटइनाममूल्य ((वर्टिकलएलिन्मेंट) 0);  

यह सभी एंउम प्रकारों के लिए काम करता है, इससे कोई फर्क नहीं पड़ता कि उनका अंतर्निहित पूर्णांक प्रकार।


Comments