स्विच स्टेटमेंट में "या" कैसे जोड़ें?


129

यही है जो मैं करना चाहता हूं:

switch(myvar)
{
    case: 2 or 5:
    ...
    break;

    case: 7 or 12:
    ...
    break;
    ...
}

मैंने "केस: 2 || 5" के साथ कोशिश की, लेकिन यह काम नहीं किया।

उद्देश्य विभिन्न मूल्यों के लिए एक ही कोड नहीं लिखना है।


आपका क्या मतलब है "यह काम नहीं किया"? क्या यह आपको वाक्यविन्यास त्रुटियां, या तार्किक त्रुटियाँ देता है?
ज़ैक

जवाबों:


324

प्रत्येक स्विच केस को स्टैक करके, आप OR स्थिति प्राप्त करते हैं।

switch(myvar)
{
    case 2:
    case 5:
    ...
    break;

    case 7:
    case 12:
    ...
    break;
    ...
}

6
जोएल, इसके माध्यम से गिरने का समर्थन नहीं करता है लेकिन यह स्टैकिंग का समर्थन करता है (जैसे, इस उत्तर में एक खाली मामला 2 केस 5 अनुभाग को निष्पादित करता है)।
paxdiablo

यह ठीक वही है जिसकी मुझे तलाश थी। अच्छी नौकरी, आपके काम की सराहना की जाती है।
क्रिस



17

यदि आप अन्यथा निर्दिष्ट नहीं करते हैं तो केस-स्टेटमेंट अपने आप गिर जाते हैं (ब्रेक लिखकर)। वहाँ आप लिख सकते हैं

switch(myvar)
{
   case 2:
   case 5:
   {
      //your code
   break;
   }

// आदि... }


5
ध्यान दें कि यह केवल खाली मामलों के लिए सही है। वास्तविक शरीर वाले मामले अपने आप नहीं गिरते हैं।
पर Freund

4

स्विच स्टेटमेंट के लिए उदाहरण से पता चलता है कि आप गैर-खाली caseएस को ढेर नहीं कर सकते हैं , लेकिन gotoएस का उपयोग करना चाहिए :

// statements_switch.cs
using System;
class SwitchTest 
{
   public static void Main()  
   {
      Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); 
      Console.Write("Please enter your selection: "); 
      string s = Console.ReadLine(); 
      int n = int.Parse(s);
      int cost = 0;
      switch(n)       
      {         
         case 1:   
            cost += 25;
            break;                  
         case 2:            
            cost += 25;
            goto case 1;           
         case 3:            
            cost += 50;
            goto case 1;             
         default:            
            Console.WriteLine("Invalid selection. Please select 1, 2, or3.");            
            break;      
       }
       if (cost != 0)
          Console.WriteLine("Please insert {0} cents.", cost);
       Console.WriteLine("Thank you for your business.");
   }
}

-1 एमएसडीएन लिंक पृष्ठ के नीचे एक स्टैक्ड उदाहरण है। किसी भी दर पर, स्टैक्ड केस काम करते हैं, विशेष रूप से इस सवाल में जहां कहा गया है कि डुप्लिकेट कोड नहीं लिखना है जैसा कि आपके मामले में 1 और 2 में किया गया है
Gary.Ray

"गोटो केस" के उदाहरण के रूप में उपयोगी उत्तर।
स्टेफ गीसेल

मुझे गोटो से नफरत है कि यह 1992 क्या है?
मूसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.