2012-11-11 4 views
7

मैं कम करता है, तो का उपयोग करके अपनी कोड छोटा करने के लिए कोशिश कर रहा हूँ:सी # छोटा अगर कथन int के साथ काम नहीं कर रहा है? (पूर्णांक = नल)

int? myInt=myTextBox.Text == "" ? null : 
    Convert.ToInt32(myTextBox.Text); 

लेकिन मैं निम्नलिखित त्रुटि हो रही है: सशर्त अभिव्यक्ति का प्रकार निर्धारित नहीं किया जा सकता है, क्योंकि कोई अंतर्निहित रूपांतरण है वहाँ के बीच '' और 'int'

निम्नलिखित काम करता है:

int? myInt; 
if (myTextBox.Text == "") //if no text in the box 
    myInt=null; 
else 
    myInt=Convert.ToInt32(myTextBox.Text); 

और अगर मैं की जगह '' पूर्णांक में (जैसे कि 'अशक्त 4') यह भी काम करता है:

+०१२३५१६४१०६१
int? myInt=myTextBox.Text == "" ? 4: 
    Convert.ToInt32(myTextBox.Text); 
+1

यह एक छोटा करता है, तो है, लेकिन एक त्रिगुट ऑपरेटर नहीं है: और यही कारण है सी # शब्द डिफ़ॉल्ट शामिल है। – MarioDS

+1

'int' को 'int' पर कास्ट करें। – CodesInChaos

+0

यह एक डुप्लिकेट है :( – nawfal

उत्तर

7

ऐसा करें:

int? myInt=myTextBox.Text == "" ? (int?)null : Convert.ToInt32(myTextBox.Text); 
+3

आप सभी लोग int.TryParse hm :) के बारे में ज्यादा कुछ नहीं देते हैं? – KroaX

0
int? myInt=myTextBox.Text == "" ? (int?)null : 
    Convert.ToInt32(myTextBox.Text); 
+0

जबकि यह _may_ तकनीकी रूप से प्रश्न का उत्तर देता है, यदि आप यह भी बताते हैं कि यह _why_ करता है तो आपका उत्तर महत्वपूर्ण रूप से बेहतर होगा। – Ben

+0

@ बेन, टिप्पणी के लिए धन्यवाद। मुझे लगता है कि यह स्पष्ट है। –

1

मेरे मैं अनुसरण करने का सुझाव?

int value; 
int? myInt = (int.TryParse(myTextBox.Text, out value)) ? value : default(int?); 
2

हम क्या जरूरत है कि अगर अभिव्यक्ति के दोनों भागों (यदि और कुछ) ही कर रहे हैं, यह बताने के लिए संकलक पता है।

int? myInt=myTextBox.Text == "" 
    ? default(int?) 
    : Convert.ToInt32(myTextBox.Text); 
0
int number =!string.IsNullOrEmpty(temp) ? Convert.ToInt32(temp) : (int?) null; 
संबंधित मुद्दे