enum

2009-12-26 17 views
16

से पूर्णांक मान प्राप्त करना मैं अपने सी # कौशल की सहायता के लिए मूल Battleship game पर काम कर रहा हूं। अभी मुझे enum के साथ थोड़ा परेशानी हो रही है। मेरे पास है:enum

enum game : int 
{ 
    a=1, 
    b=2, 
    c=3, 
} 

मैं इनपुट 'सी' और कुछ कोड पारित करने के लिए खिलाड़ी चाहते हैं पूर्णांक 3 लौट आते हैं। मैं स्ट्रिंग var (string pick;) लेने के लिए इसे कैसे स्थापित करूं और इसे इस enum का उपयोग करके सही int में परिवर्तित कर दूं? जिस पुस्तक पर मैं पढ़ रहा हूं वह थोड़ा उलझन में है

+2

यह बुरा व्यवहार 'int' के अलावा अन्य और' ताकि आप इसे स्पष्ट करने के लिए की जरूरत नहीं है int', डिफ़ॉल्ट है अंतर्निहित प्रकार के साथ enums उपयोग करने के लिए है । बस केह रहा हू। –

+2

आपका प्रश्न नहीं है "एक स्ट्रिंग से enum मान प्राप्त करें"? – knoopx

उत्तर

39

बस स्ट्रिंग को पार्स करें और int पर डालें।

var number = (int)((game) Enum.Parse(typeof(game), pick)); 
+0

बहुत अच्छा काम करता है – Anthony

+0

मुझे (int) (game) अभिव्यक्ति –

+1

के साथ एक समान प्रभाव दिखाई देता है, यहां 'pick' क्या है? – gdmanandamohon

4

बस टाइपकास्टिंग?

int a = (int) game.a 
+0

नहीं - यह ओपी की तलाश में नहीं है। – Jeff

+0

वास्तव में मुझे क्या चाहिए, धन्यवाद! – Jamie

12
// convert string to enum, invalid cast will throw an exception 
game myenum =(game) Enum.Parse(typeof(game), mystring); 

// convert an enum to an int 
int val = (int) myenum; 

// convert an enum to an int 
int n = (int) game.a; 
3

आप यह सुनिश्चित करें कि आने वाली स्ट्रिंग मान्य enum मान हैं नहीं कर रहे हैं, तो आप() पार्स करने की कोशिश करने Enum.TryParse उपयोग कर सकते हैं। यदि यह मान्य नहीं है, तो यह अपवाद फेंकने के बजाय झूठी वापसी करेगा।

जेपी

0

उत्तर ठीक है लेकिन वाक्यविन्यास गन्दा है।

बहुत neater कुछ इस तरह है:

public DataSet GetBasketAudit(enmAuditPeriod auditPeriod) 
    { 
     int auditParam =Convert.ToInt32(auditPeriod) ;