2010-07-06 20 views
35

दो बूलियन को देखते हुए, सबसे सुरुचिपूर्ण एक लाइनर के साथ कैसे आना है जो सी # में एक्सओआर ऑपरेशन की गणना करता है?दो बूलियन फील्ड के लिए एक्सओआर ऑपरेशन

मुझे पता है कि कोई switch या ifelse के संयोजन से ऐसा कर सकता है लेकिन इससे मेरा कोड बदसूरत हो जाएगा।

उत्तर

59
bool xorValue = bool1^bool2; 
+3

मुझे लगता है कि शॉर्ट सर्किटिंग एक्सओआर संभव नहीं है क्योंकि कोई भी^^^ 'ऑपरेटर नहीं है, क्योंकि आपको सभी मामलों में दोनों मानों का मूल्यांकन करना है। –

+3

मैं व्यक्तिगत रूप से सोचता हूं कि 'बूल ElegantResult = ElegantBoolean1^ElegantBoolean2;' थोड़ा और सुरुचिपूर्ण है ... लेकिन मुझे लगता है कि यह वास्तव में दर्शक की आंखों में है –

48

ठीक कुछ प्रसंग जोड़ने के लिए: आप यहाँ Tables

वहाँ आप देख सकते हैं कि "विशेष या" मूल रूप से "के रूप में बराबर नहीं" एक ही है देख सकते हैं। तो आप बस (बूलियन) के साथ इस इस्तेमाल कर सकते हैं:

if(X != Y)... 

लेकिन क्या आपका मतलब है अगर आप सीधे लोगों को दिखाना चाहते हैं "XOR" बस यहाँ अन्य उत्तर का उपयोग करें।

+0

मैं इस समाधान प्यार करता था। ऊपर होना चाहिए – aod

18

सी # logical XOR operator^ है। यहां बताया गया है कि आप इसे कैसे करते हैं।

bool result = x^y //x XOR y 
1

मुझे लगता है कि यह मदद करनी चाहिए:

A^B ? TrueOperation() : FalseOperation(); 
संबंधित मुद्दे