切换语句示例

时间:2013-02-23 22:37:31

标签: c# visual-studio-2012 switch-statement

如果此文本框的总数为:PostDiscountTextBox.Text = $ 500.00,我们如何使Switch语句声明如果折扣后成本金额介于0.00和999.99之间,则显示一个消息框,其中显示“此金额符合条件”对于'A-100'频繁飞行里程“和”确定“按钮?

有人会提供一个switch语句示例吗?

到目前为止我只有这个,我认为它根本没有。有人会引导我完成这个吗?谢谢。

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

感谢所有帮助过的人,但我想弄清楚如何使用一个switch语句来评估基于一系列数值的post-discount Cost(没有关于if语句)。是的,很多案例都会被提出,这些将是我的前两个案例。有人会善意地给我一个例子,以便我可以填补其余的案例吗?我有很多。谢谢。

如果折扣后成本金额介于0.00和999.99之间,则会显示一个消息框,其中显示“此金额符合'A-100'常用飞行里程。”和一个“确定”按钮。不应使用标题栏文本或图标。

如果折扣后成本金额介于1,000.00和1,499.99之间,则会显示一个消息框,其中显示“此金额符合'B-500'常用飞行里程。”和一个“确定”按钮。不应使用标题栏文本或图标。

3 个答案:

答案 0 :(得分:31)

C#中不允许使用switch这种用法。

以下是正确使用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
}

答案 1 :(得分:3)

您无法在switch中检查范围,您应该使用else if链。见Is using decimal ranges in a switch impossible in C#?

答案 2 :(得分:2)

直接的方法是使用if else语句,因为switch操作不允许范围检查。另一个棘手的方法是使用Dictionaries。下面的代码片段是使用第二种方法演示您想要的内容。

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方法那么容易,但是要求测试。