2013-02-23 15 views
11

Se il totale di questa casella di testo è: PostDiscountTextBox.Text = $ 500,00, come si fanno le dichiarazioni di Switch in cui si afferma che se l'importo del costo di post-sconto è compreso tra 0,00 e 999,99, visualizzare una finestra di messaggio con il messaggio di "Questo importo si qualifica per" A-100 "frequentemente flier miglia" e un pulsante "OK"?Esempio di istruzioni di commutazione

Qualcuno fornirà un esempio di un'istruzione switch?

L'ho solo fino ad ora, e non penso che segua assolutamente nulla. Qualcuno mi guiderà attraverso questo? Grazie.

 switch (PostDiscountCostTextBox.Text) 
     { 
      case (0.00 < && PostDiscountCostTextBox.Text <= 999.00) 

ringraziare tutti coloro che hanno aiutato, ma sto cercando di capire come utilizzare un'istruzione switch che valuta Costo post-sconto basato su una serie di valori numerici (nulla di un'istruzione if). Sì, verranno messi molti casi, e questi saranno i miei primi due casi. Qualcuno sarà così gentile da fornirmi un esempio in modo da poter riempire il resto dei miei casi? Ho un sacco. Grazie.

Se l'ammontare dei costi post-sconto è tra 0,00 e 999,99, visualizzare una finestra di messaggio con il messaggio di "Tale importo si qualifica per 'A-100' miglia frequent flyer". e un pulsante "OK". Non utilizzare il testo o l'icona della barra del titolo.

Se l'importo del costo post-sconto è tra 1.000,00 e 1,499,99, visualizzare una finestra di messaggio con il messaggio di "Questo importo si qualifica per" miglia flier frequenti "B-500". " e un pulsante "OK". Non utilizzare il testo o l'icona della barra del titolo.

+0

Se si dispone di una sola condizione, non è necessario 'switch', è possibile utilizzare solo un' se'. – wRAR

+0

possibile duplicato di [Sta usando intervalli decimali in un interruttore impossibile in C#?] (Http://stackoverflow.com/questions/2937154/is-using-decimal-ranges-in-a-switch-impossible-in-c) – wRAR

+0

beh ... è stato costruttivo per me. sottoalanciato – Evorlor

risposta

28

Questo tipo di utilizzo di switch non è consentito in C#.

Ecco un esempio di una corretta switch utilizzo

switch(n)  
{   
    case 1: 
     cost += 25; 
     break;     
    case 2:    
     cost += 25; 
     break;   
    case 3:    
     cost += 50; 
     break;   
    default:    
     Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");    
     break;  
} 

Il vostro esempio dovrebbe essere trasformare in if-elseif-else dichiarazione:

if(first_case_predicate) 
{ 

} 
else if(another_predicate) 
{ 

} 
else 
{ 
    // like 'default' of switch 
} 
2

Il modo più semplice è quello di utilizzare if else dichiarazioni come gli intervalli di controllo siano non ammessi per l'operazione switch. L'altro modo difficile è usare Dictionaries. Lo snippet di codice seguente è una dimostrazione di ciò che desideri utilizzando il secondo approccio.

decimal myVal = decimal.Parse(PostDiscountCostTextBox.Text); 

     var conditions = new Dictionary<Func<int, bool>, Action> 
     { 
      { x => x > 0 && x <= 999 , () => Console.WriteLine("This amount qualifies for 'A-100' frequent flier miles.") } , 
      { x => x > 999 , () => Console.WriteLine("Dummy!") } , 
     }; 

     cases.First(kvp => kvp.Key(myNum)).Value(); 

Non è così facile come l'approccio if else, ma desreves un test.

Problemi correlati