13

このテキストボックスの合計が PostDiscountTextBox.Text = $500.00 の場合、値引き後の金額が 0.00 から 999.99 の間である場合、「この金額は 'A -100 フィートのフリークエント フライヤー マイル」と「OK」ボタン?

誰かが switch ステートメントの例を提供してくれますか?

私はこれまでのところこれしか持っていません。誰かがこれを案内してくれますか?ありがとうございました。

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

助けてくれたみんなに感謝しますが、数値の範囲に基づいて割引後のコストを評価する switch ステートメントの使用方法を見つけようとしています (if ステートメントについては何もありません)。はい、多くのケースが置かれますが、これらは私の最初の 2 つのケースになります。残りのケースを埋めることができるように、誰かが私に例を提供してくれますか? たくさん持っています。ありがとうございました。

割引後の費用額が0.00 ~ 999.99の場合、「この金額は 'A-100' フリークエント フライヤー マイルの対象となります」というメッセージを含むメッセージ ボックスを表示します。そして「OK」ボタン。タイトル バーのテキストやアイコンは使用しないでください。

割引後の費用額が1,000.00 ~ 1,499.99の場合、「この金額は 'B-500' フリークエント フライヤー マイルの対象となります」というメッセージを含むメッセージ ボックスを表示します。そして「OK」ボタン。タイトル バーのテキストやアイコンは使用しないでください。

4

3 に答える 3

31

この種のswitch使用法は C# では許可されていません。

switch適切な使用例を次に示します。

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;      
 }

if-elseif-elseあなたの例はステートメントに変換する必要があります:

if(first_case_predicate)
{

}
else if(another_predicate)
{

}
else
{
    // like 'default' of switch
}
于 2013-02-23T22:41:38.553 に答える
3

では範囲をチェックできません。switchのチェーンを使用する必要がありますelse ifC# ではスイッチで 10 進範囲を使用することは不可能ですか? を参照してください。

于 2013-02-23T22:40:17.330 に答える
2

if elseこの操作では範囲チェックが許可されていないため、ステートメントを使用するのが簡単な方法ですswitch。もう 1 つのトリッキーな方法は、 を使用することDictionariesです。以下のコード スニペットは、2 番目のアプローチを使用して必要なもののデモンストレーションです。

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();

if elseアプローチほど簡単ではありませんが、テストに値します。

于 2013-02-23T22:49:48.513 に答える