c# - जांचें कि कोई वैरिएबल मूल्यों की विज्ञापन-सूची सूची में है या नहीं




variables contains (5)

इस तरह कुछ लिखने का एक छोटा रास्ता है:

if(x==1 || x==2 || x==3) // do something

जो मैं खोज रहा हूं वह ऐसा कुछ है:

if(x.in((1,2,3)) // do something

आप एक साधारण Dictionary<TKey, TValue> बना सकते हैं जिसका उपयोग उस समस्या के लिए निर्णय तालिका के रूप में किया जाएगा:

        //Create your decision-table Dictionary
        Action actionToPerform1 = () => Console.WriteLine("The number is okay");
        Action actionToPerform2 = () => Console.WriteLine("The number is not okay");
        var decisionTable = new Dictionary<int, Action>
            {
                {1, actionToPerform1},
                {2, actionToPerform1},
                {3, actionToPerform1},
                {4, actionToPerform2},
                {5, actionToPerform2},
                {6, actionToPerform2}
            };

        //According to the given number, the right *Action* will be called.
        int theNumberToTest = 3;
        decisionTable[theNumberToTest](); //actionToPerform1 will be called in that case.

एक बार जब आप अपना Dictionary शुरू कर लेते हैं, तो सब कुछ करने के लिए छोड़ दिया जाता है:

decisionTable[theNumberToTest]();


आप सूची का उपयोग कर इसे प्राप्त कर सकते हैं। विधि विधि:

if(new []{1, 2, 3}.Contains(x))
{
    //x is either 1 or 2 or 3
}

यदि यह एक IEnumerable<T> , तो इसका उपयोग करें:

if (enumerable.Any(n => n == value)) //whatever

अन्यथा, यहां एक छोटी विस्तार विधि है:

public static bool In<T>(this T value, params T[] input)
{
    return input.Any(n => object.Equals(n, value));
} 

इसे एक static class में रखें, और आप इसे इस तरह उपयोग कर सकते हैं:

if (x.In(1,2,3)) //whatever

यह उत्तर C # ;-) के संभावित भविष्य संस्करण को संदर्भित करता है यदि आप विजुअल बेसिक पर स्विच करने पर विचार करते हैं, या यदि माइक्रोसॉफ्ट अंततः सी # में चयन केस स्टेटमेंट पेश करने का निर्णय लेता है, तो यह ऐसा दिखाई देगा:

Select Case X
    Case 1, 2, 3
    ...
End Select







contains