C# Programming

C# में पूर्णांकों का सुरक्षित रूप से एनम में रूपांतरण

Spread the love

C# में नामित स्थिरांकों के समुच्चयों को परिभाषित करने के लिए एनम (एनुमेरेशन) एक बहुमूल्य उपकरण हैं। अक्सर, आपको किसी पूर्णांक मान को उसके संगत एनम सदस्य में वापस बदलने की आवश्यकता होगी। यह लेख सुरक्षित और कुशलतापूर्वक इस रूपांतरण को करने के लिए कई तकनीकों का पता लगाता है, जिसमें सर्वोत्तम प्रथाओं पर जोर दिया गया है।

विषयवस्तु की तालिका

प्रत्यक्ष कास्टिंग

सबसे सरल तरीका प्रत्यक्ष कास्टिंग है। यह केवल तभी काम करता है जब आपको यकीन हो कि पूर्णांक एक मान्य एनम सदस्य का प्रतिनिधित्व करता है। हालाँकि, यह त्रुटि-प्रवण है और यदि पूर्णांक अमान्य है तो रनटाइम अपवाद हो सकते हैं।


public enum DaysOfWeek
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
}

public class Example
{
    public static void Main(string[] args)
    {
        int dayValue = 3;
        DaysOfWeek day = (DaysOfWeek)dayValue;
        Console.WriteLine(day); // आउटपुट: Wednesday

        // यदि dayValue एक मान्य एनम सदस्य नहीं है तो यह रनटाइम पर एक अपवाद फेंकेगा।
        int invalidDayValue = 10;
        DaysOfWeek invalidDay = (DaysOfWeek)invalidDayValue; 
        Console.WriteLine(invalidDay); 
    }
}

जब तक आपको पूर्णांक की वैधता के बारे में पूर्ण निश्चितता न हो, तब तक प्रत्यक्ष कास्टिंग से बचें। त्रुटि हैंडलिंग की कमी इसे उत्पादन कोड के लिए जोखिम भरा बनाती है।

Enum.Parse का उपयोग करना

Enum.Parse एक अधिक मजबूत समाधान प्रदान करता है। यह एनम प्रकार और पूर्णांक स्ट्रिंग प्रतिनिधित्व को इनपुट के रूप में लेता है, संगत एनम सदस्य को लौटाता है। यदि पूर्णांक एक परिभाषित एनम मान नहीं है तो यह एक ArgumentException फेंकता है।


public class Example
{
    public static void Main(string[] args)
    {
        int dayValue = 3;
        try
        {
            DaysOfWeek day = (DaysOfWeek)Enum.Parse(typeof(DaysOfWeek), dayValue.ToString());
            Console.WriteLine(day); // आउटपुट: Wednesday
        }
        catch (ArgumentException)
        {
            Console.WriteLine("अमान्य एनम मान।");
        }
    }
}

Enum.Parse प्रत्यक्ष कास्टिंग से अधिक सुरक्षित है क्योंकि यह स्पष्ट रूप से अमान्य इनपुट को संभालता है, अप्रत्याशित क्रैश को रोकता है। हालाँकि, अपवाद हैंडलिंग ओवरहेड जोड़ता है।

Enum.IsDefined का उपयोग करना

बेहतर दक्षता और सुरक्षा के लिए, Enum.Parse को कॉल करने से पहले Enum.IsDefined का उपयोग करके एनम के भीतर पूर्णांक के अस्तित्व की जाँच करें।


public class Example
{
    public static void Main(string[] args)
    {
        int dayValue = 3;
        if (Enum.IsDefined(typeof(DaysOfWeek), dayValue))
        {
            DaysOfWeek day = (DaysOfWeek)Enum.Parse(typeof(DaysOfWeek), dayValue.ToString());
            Console.WriteLine(day); // आउटपुट: Wednesday
        }
        else
        {
            Console.WriteLine("अमान्य एनम मान।");
        }
    }
}

यह अपवादों की संभावना को कम करते हुए, प्रारंभिक वैधता जांच के साथ Enum.Parse की सुरक्षा को जोड़ता है।

Enum.TryParse का उपयोग करना

Enum.TryParse अनुशंसित दृष्टिकोण है। यह रूपांतरण का प्रयास करता है, अपवाद फेंके बिना सफलता या विफलता का संकेत देने वाला एक बूलियन लौटाता है। यह क्लीनर, अधिक कुशल त्रुटि हैंडलिंग के लिए बनाता है।


public class Example
{
    public static void Main(string[] args)
    {
        int dayValue = 3;
        DaysOfWeek day;
        if (Enum.TryParse(dayValue.ToString(), out day))
        {
            Console.WriteLine(day); // आउटपुट: Wednesday
        }
        else
        {
            Console.WriteLine("अमान्य एनम मान।");
        }
    }
}

अपवाद-मुक्त त्रुटि हैंडलिंग और दक्षता के कारण Enum.TryParse सबसे मजबूत और पसंदीदा विधि है।

निष्कर्ष

C# में पूर्णांकों को एनम में बदलने के लिए कई तरीके मौजूद हैं। जबकि प्रत्यक्ष कास्टिंग संक्षिप्त है, यह सबसे कम सुरक्षित है। Enum.Parse अपवाद-आधारित हैंडलिंग प्रदान करता है, और Enum.IsDefined एक निवारक जांच जोड़ता है। हालाँकि, Enum.TryParse सबसे मजबूत और कुशल समाधान के रूप में सामने आता है, जो स्वच्छ अपवाद-मुक्त त्रुटि हैंडलिंग प्रदान करता है। वह विधि चुनें जो आपके संदर्भ के लिए सबसे उपयुक्त हो, हमेशा सुरक्षा और रखरखाव को प्राथमिकता दें। अप्रत्याशित अनुप्रयोग व्यवहार को रोकने के लिए संभावित त्रुटियों को शालीनता से संभालें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *