मुझे लगता है कि, मुझे लगता है कि, एक काफी सरल विधि होना मुश्किल समय है।सी # इन() विधि? (एसक्यूएल की तरह)
मुझे लगता है कि हम सब इस का उपयोग किया है:
select someThing from someTable where someColumn in('item1', 'item2')
सी # में, मैं इस तरह सामान लिखने की है:
if (someEnum == someEnum.Enum1 || someEnum == someEnum.Enum2 ||
someEnum == someEnum.Enum3)
{
this.DoSomething();
}
यह काम करता है, लेकिन यह सिर्फ शब्दों वाले है।
निराशा से, मैंने जो कुछ करने की कोशिश कर रहा हूं उसे पूरा करने के लिए मैंने एक विस्तार विधि लिखा।
namespace System
{
public static class SystemExtensions
{
public static bool In<T>(this T needle, params T[] haystack)
{
return haystack.Contains(needle);
}
}
}
अब, मैं कम कोड लिख सकते हैं:
if (someEnum.In(someEnum.Enum1, someEnum.Enum2, someEnum.Enum3))
this.DoSomething();
if (someInt.In(CONSTANT1, CONSTANT2))
this.DoSomethingElse();
यह गंदा लगता है, हालांकि, कुछ है कि मैं सिर्फ ढांचे में नहीं मिल सकता है के लिए अपने ही विधि लिखने के लिए।
किसी भी मदद आप लोगों की पेशकश कर सकते महान, धन्यवाद होगा
संपादित करें: धन्यवाद में गहराई से anaylsis के लिए हर किसी को। मुझे लगता है कि मैं अपनी इन() विधि का उपयोग जारी रखूंगा।
विशेष रूप से ऐसा करने के लिए ढांचे में कुछ भी नहीं है, इसलिए आपका दृष्टिकोण ध्वनि लगता है। आप नया [] {someEnum.Enum1, someEnum.Enum2} भी कर सकते हैं। यदि आप एक्सटेंशन विधि नहीं चाहते हैं तो कुछ (कुछ एनीम} शामिल हैं। एक्सटेंशन विधि हालांकि इसे अच्छी तरह से पढ़ती है। – btlog
मैं आमतौर पर 'कंटेनर() ' * इन * प्रश्नों के लिए विस्तार विधि। वास्तव में, लिंक-टू-एसक्यूएल प्रश्नों में 'इन' में 'इन' का अनुवाद होता है।मुझे आपकी 'इन()' एक्सटेंशन विधि पसंद है, क्योंकि यह उपयोग के लिए 'कंटेनस()' के लिए एक अच्छा सिंटैक्टिक रैपर प्रदान करता है जब मेरे पास पहले से ही एक समेकित कंटेनर में मान नहीं होते हैं। – kbrimington
ऐसा लगता है कि आपको बहुत अधिक पता चला है कि एक्सटेंशन विधियां पहले स्थान पर क्यों हैं। मुझे आपके दृष्टिकोण की सफाई पसंद है। –