2011-01-07 14 views
32

कुल नोब यहां नम्र हो। मैंने हर जगह देखा है और इसका जवाब नहीं मिल रहा है। मैं निम्नलिखित कैसे परेशान करूं?बयान अगर एक-लाइनर, तो इसे कैसे परिवर्तित करें यदि-else-statement

if (expression) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 

मैं इसे काम करने के लिए नहीं मिल सकता क्योंकि यह कुछ बनाम बना रहा है। साथ ही कर सकते हैं

somevar = (expression) ? value1 : value2; 

जैसा कि मैंने कहा, कोमल हो कृपया :)

उत्तर

68
return (expression) ? value1 : value2; 

तो value1 और value2 वास्तव में true और false अपने उदाहरण की तरह कर रहे हैं, तो आप: मैं पहले से ही इस तरह बातें देखा है बस

return expression; 
+26

स्पष्टीकरण के लिए, यह एक "त्रिगुट ऑपरेटर" – jcolebrand

+0

मैं वास्तव में यह सही था जब मैं के साथ इसे करने की कोशिश में कहा जाता है "? वापसी (अभिव्यक्ति) मान 1: मान 2," लेकिन मैंने इसे सही तरीके से सही रखा। इसलिए, मुझे "कोड पहुंचने योग्य" के बारे में एक त्रुटि मिली क्योंकि यह उस कथन पर कभी नहीं मिलेगा। खुशी है कि मैंने वैसे भी पूछा "वापसी अभिव्यक्ति;" अधिक समझ में आता है ... धन्यवाद! – snickered

+4

असल में 'टर्नरी' का अर्थ केवल तीन आइटम से बना है, इसे एक सशर्त ऑपरेटर कहा जाता है। http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx – Joel

7

सभी आप अपने मामले में आवश्यकता होगी है:

return expression; 

कारण है कि यह है कि अभिव्यक्ति ही true या false की एक बूलियन मान के लिए मूल्यांकन करता है, तो यह एक if ब्लॉक (या यहां तक ​​कि एक ?: ऑपरेटर) के लिए बेमानी है। expression एक बूलियन रिटर्न

return expression; 
+0

जैसे फ़ंक्शन था, मुझे नहीं लगता कि वह _why_ को समझता है ताकि आप उस भाग को समझा सकें, लेकिन हाँ, मैं यही करूँगा। – jcolebrand

2

अभिव्यक्ति के बाद से बूलियन है।

उदाहरण

return (a > b) 
3

हैं, तो आप बस इसे का परिणाम लौट सकते हैं:

संबंधित मुद्दे