2010-04-30 10 views
6

मान लें कि मेरे पास यह वर्ग है:सी #: enum नाम प्रतिबिंबित

public class SiteMapEntry 
{ 
    public static enum ChangeFrequency 
    { 
     Always, 
     Hourly, 
     Daily, 
     Weekly, 
     Monthly, 
     Yearly, 
     Never 
    } 
} 

और यह फ़ंक्शन:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq) 
{ 

} 

जिसे कहा जाता है:

string foobarNever = FooBar(SiteMapEntry.ChangeFrequency.Never); 

मुझे FooBar विधि में क्या करने की आवश्यकता है string foobarNever == "never"?

उत्तर

17

changeFreq.ToString() आपको enum value का एक स्ट्रिंग प्रतिनिधित्व देगा।

+3

और दूसरी दिशा में जाने के लिए, 'Enum.Parse (...)' का उपयोग करें जो आपको चाहिए। –

1

स्ट्रिंग foobarNever = "कभी नहीं" :)

वैकल्पिक रूप से, क्यों तुम सिर्फ कर नहीं कर रहे हैं:

if(FooBar(SiteMapEntry.ChangeFrequency.Never) == SiteMapEntry.ChangeFrequency.Never) 
{} 
1

वहाँ enums के साथ बातचीत के कई तरीके हैं। सबसे अच्छा अभ्यास के लिए, हमेशा परिभाषित प्रकार के साथ एक enum तुलना:

if(changeFreq == ChangeFrequency.Never) 

नहीं

if(changeFreq.ToString() == "Never") 

के रूप में यह अधिक वर्णनात्मक है। यदि आपको स्ट्रिंग मान को एनम प्रकार में कनवर्ट करने की आवश्यकता है, तो

try 
{ 
    convertedValue = (ChangeFrequency)Enum.Parse(typeof(ChangeFrequency), stringValue); 
} 
catch 
{ 
    convertedValue = ChangeFrequency.Always; // Whatever default you want 
} 
संबंधित मुद्दे