मैं सिर्फक्या यह एक एक्सटेंशन मोड का अच्छा उपयोग है?
if (value == value1 || value == value2 || value == value3 || value == value4)
//do something
की लाइनों में एक अगर बयान में लिखा था और यह मुझे गुस्सा दिलाती है मैं हमेशा 'मूल्य ==' भाग को दोहराने के लिए किया है। मेरी राय में यह पढ़ने में मुश्किल बनाने के अलावा कोई उद्देश्य नहीं दे रहा है।
public static bool IsEqualToAny<T>(this T value, params T[] objects)
{
return objects.Contains(value);
}
अब मैं बस लिख सकते हैं
if (value.IsEqualToAny(value1, value2, value3, value4))
//do something
यह एक ExtensionMethod का एक अच्छा उपयोग है:
मुझे लगता है कि उपरोक्त परिदृश्य अधिक पठनीय बनाना चाहिए निम्नलिखित ExtensionMethod लिखा?
संपादित करें:
सभी महान उत्तरों के लिए धन्यवाद। रिकॉर्ड के लिए: मैंने विधि को रखा है। जबकि सुझाव है कि आप बस new []{value1,value2,value3,value4}.Contains(value)
इस्तेमाल कर सकते हैं सच है, मैं बस अगर बयान इस तरह पढ़ने का अधिकार (बाएं से अगर यह मान इनके बजाय में से किसी के बराबर है पसंद करते हैं इन मूल्यों का मान यही)। प्रत्येक ऑब्जेक्ट पर इंटेलिजेंस में एक और विधि दिखाई देने के लिए मेरे लिए कोई मुद्दा नहीं है।
धन्यवाद। यह काफी सामान्य है। मैं सिर्फ एक enum मूल्य की तुलना कर रहा था - यह जीयूआई प्रोग्रामिंग से संबंधित था, इसलिए इसका कोई व्यवसाय अर्थ नहीं था। –