2009-01-25 5 views
9

मैं enum value और स्ट्रिंग की एक साधारण तुलना कैसे करूं जो enums नाम से मेल खाना चाहिए?स्ट्रिंग = Enum.Value के लिए परीक्षण कैसे करें?

मैं स्ट्रिंग को इसके उचित एनम मान में कैसे पार्स कर सकता हूं।

उदाहरण के लिए,

Enum A 
    B=0 
    C=1 
    D=2 
End Enum 

मैं कैसे पता चलेगा अगर स्ट्रिंग = A.C और कैसे मैं एक स्ट्रिंग प्रतिनिधित्व के साथ उसकी तुलना के बिना अपनी इसी एक मूल्य में स्ट्रिंग परिवर्तित?

+2

की जाँच करने के नाम() फ़ंक्शन का उपयोग कर सकते हैं यह कहना, बस बीसीडी की जरूरत नहीं है पर्याप्त – balexandre

+0

मुझे पता नहीं था, टिप के लिए धन्यवाद। – Middletone

उत्तर

17

कई अलग-अलग तरीकों कि संबंधित हैं कर रहे हैं:

Enum.GetName(typeof(A), A.C) == "C" 
A.C.ToString() == "C" 
((A)Enum.Parse(typeof(A), "C")) == A.C 

पहले दो एक स्ट्रिंग के लिए A.C का मूल्य परिवर्तित प्रतिनिधित्व ("C") और उसके बाद इसे एक स्ट्रिंग से तुलना करें। अंतिम एक स्ट्रिंग "C" को A पर परिवर्तित करता है, और फिर वास्तविक प्रकार A के रूप में तुलना करता है।

Enum स्ट्रिंग के लिए: enumValue.ToString() या Enum.GetName(typeof(A), A.C)

स्ट्रिंग enum करने के लिए: (A)Enum.Parse(typeof(A), "C")

ध्यान दें कि उन में से कोई भी वास्तव में काम करेंगे अगर गणन FlagsAttribute के साथ चिह्नित है।

+0

सरल और अच्छी तरह से समझाया गया। – Roylee

7

Enum.Parse विधि:

एक बराबर enumerated वस्तु को नाम या एक या एक से अधिक enumerated स्थिरांक की अंकीय मान की स्ट्रिंग प्रतिनिधित्व रूपांतरित करता है। पैरामीटर निर्दिष्ट करता है कि ऑपरेशन केस-संवेदी है या नहीं।

यहाँ MSDN से VB.NET उदाहरण कोड है:

Module Example 
    Public Sub Main() 
     Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"} 
     For Each colorString As String In colorStrings 
     Try 
      Dim colorValue As Colors = CType([Enum].Parse(GetType(Colors), colorString, True), Colors)   
      If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then 
       Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString()) 
      Else 
       Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)    
      End If      
     Catch e As ArgumentException 
      Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString) 
     End Try 
     Next 
    End Sub 
End Module 
2

तुम भी यदि आप हमेशा मूल्य 0 (शून्य) के साथ शुरू enum करना चाहते हैं, वैसे इस

A.C.name() == "C"