2011-03-14 48 views
6

का उपयोग करके मैं एकाधिक कथन कैसे लिख सकता हूं मैं if else के स्थान पर सशर्त ऑपरेटर लिख रहा हूं। लेकिन मैं मेरे मामले में मैं कई बयानों के रूप मेंसशर्त ऑपरेटर

if (condition) 
{ 
    statement 1; 
    statement 2; 
} 
else 
{ 
    statement 3; 
    statement 4; 
} 

कैसे मैं सशर्त ऑपरेटर ? and :

+1

यह सिर्फ इसलिए है क्योंकि यह अच्छा है अनावश्यक रूप से कुछ का उपयोग करने की कोशिश कर का एक उदाहरण है। – BoltClock

उत्तर

15

सशर्त ऑपरेटर विकल्प भाव का मूल्यांकन, वैकल्पिक बयान लागू नहीं करने के लिए डिज़ाइन किया गया है का उपयोग करते हुए एक ही लिख सकता है निम्नलिखित है।

बयान के अपने दो सेट प्रत्येक तार्किक ही परिणाम प्रकार है, तो आप refactor उनमें से प्रत्येक एक अलग विधि में डालने के लिए कर सकते हैं:

var result = condition ? Method1() : Method2(); 

लेकिन अगर वे और अधिक तार्किक से कोई लेना देना हो परिणाम का मूल्यांकन करने के दुष्प्रभाव, मैं इसके बजाय if ब्लॉक का उपयोग करूंगा।

2

आप नहीं कर सकते, क्योंकि सशर्त ऑपरेटर एक अभिव्यक्ति है, एक बयान नहीं। आप जो करने की कोशिश कर रहे हैं उसे प्राप्त करने के लिए आपको एक और-निर्माण का उपयोग करना होगा।

1

केवल अगर, उदाहरण के लिए, वे एक धाराप्रवाह एपीआई का पर्दाफाश करते हैं और वापसी मूल्य (यानी कुछ ऐसा है जो आपको एक ही अभिव्यक्ति में एकाधिक चरणों को निचोड़ने की अनुमति देता है); उदाहरण के लिए:

sb = (someCondition) ? sb.Append("foo").Append("bar") 
     : sb.Apppend("cde").Append("fgh"); 

अन्यथा? नहीं; आपको प्रति मामले का मूल्यांकन करने के लिए केवल एक अभिव्यक्ति मिलती है। आप निश्चित रूप से तरीकों से बाहर निकल सकते हैं;

var x = (someCondition) ? MethodA() : MethodB(); 

जो फिर से वापसी मान मानता है।

0

एक समारोह या प्रतिनिधि है कि आप का मूल्यांकन करना चाहते भाव की संख्या के लिए इसी तर्क के एक नंबर को स्वीकार करता है बनाएँ:

int i = 7, j = 8; 
Func<int, int, int> dummy = ((a,b) => b); 
int k = (i < 5) ? dummy(i++, j--) : dummy(i--, j++); 
Console.WriteLine("{0}, {1}, {2}", i, j, k); 
संबंधित मुद्दे