2012-04-27 12 views
5

एक ही ऑपरेटर को एकाधिक ऑपरेटरों को कैसे लागू करें?एक ही ऑपरेटर को एकाधिक ऑपरेटरों को कैसे लागू करें?

एक उदाहरण:

बजाय

की

if (foo == "dog" || foo == "cat" || foo == "human") 
मैं हो सकता है निम्न या इसी तरह की:

if (foo == ("dog" || "cat" || "human")); 

उत्तर

9

आपका पहला संस्करण पहले से ही एक अभिव्यक्ति में एकाधिक ऑपरेटर भी शामिल है। ऐसा लगता है कि आप एकाधिक ऑपरेटरों ("कुत्ता", "बिल्ली", "मानव") को एक ऑपरेटर (== इस मामले में) लागू करना चाहते हैं।

के लिए विशिष्ट उदाहरण आप का उपयोग करने वाले हो सकते हैं:

// Note: could extract this array (or make it a set etc) and reuse the same 
// collection each time we evaluate this. 
if (new[] { "dog", "cat", "human" }.Contains(foo)) 

लेकिन कोई सामान्य एक आकार फिट सभी सभी ऑपरेटरों के लिए इस का संस्करण।

संपादित करें: टिप्पणियों में उल्लेख के अनुसार, उपरोक्त हार्ड-कोडेड संस्करण के साथ-साथ प्रदर्शन नहीं करेगा।

+0

मैं कहना चाहिए, कि यह केवल अभिव्यक्ति हार्ड-कोड से भी बदतर प्रदर्शन करना होगा (लेकिन संभावना अधिक लचीला/पोषणीय है) –

+0

@DaveBish: धन्यवाद करना होगा। –

+0

@ जोन्स स्केट: धन्यवाद। मैंने अपने प्रश्न का फिर से उच्चारण किया है। मैं तुलना कर रहा हूं (कुत्ता, बिल्ली, मानव) एक ऑपरेंड है, तो "foo" क्या है? Operatee? – KMC

1

कुछ इस तरह कर सकते हैं:

List<string> values = new List<string> {"dog", "cat", "human"}; 
values.Any(s=>s.Equals(foo)); 

लेकिन मेरी राय में कोड आप लिखा तो किसी अन्य समाधान पहले से ही अधिक पठनीय है। यदि हम यहां संभवतः विकल्पों के दर्जनों विकल्पों के बारे में बात नहीं कर रहे हैं, स्वाभाविक रूप से।

+0

इसमें शामिल होने के बजाय किसी का भी उपयोग क्यों करें? –

+0

@ जोनस्केट: क्या यह सूची पर एक फर्क पड़ता है? – Tigran

+0

वैसे * सरल * * का उपयोग करने के लिए 'सरल' है ... सरल कोड का उपयोग क्यों न करें, जो .NET 2.0 के साथ संगत होने के साथ भी होता है? –

0

तुम हमेशा यह, की कोशिश कर सकते संकलन और खुद के लिए देखते हैं :)

("dog" || "cat" || "human") 

हो सकता है कि आप उन्हें एक सरणी और उन पर पाश में रख सकते हैं के लिए सी #

एक सार्थक अभिव्यक्ति नहीं है।

या बेहतर अभी भी, उन्हें एक सरणी में डाल दें और एक शांत लैम्ब्डा अभिव्यक्ति के साथ आएं।

1

उपयोग स्विच मामले

switch(foo) 
{ 
    case "dog": 
    case "cat": 
    case "human": 
    //Your Code 
    break; 
} 
संबंधित मुद्दे