13

如果这个文本框的总和是:PostDiscountTextBox.Text = $500.00,我们如何进行 Switch 语句说明如果折扣后成本金额介于 0.00 和 999.99 之间,则显示一个消息框,并显示消息“此金额符合 'A -100' 飞行常客里程”和“确定”按钮?

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

到目前为止我只有这个,我认为它根本没有遵循任何东西。有人会指导我完成这个吗?谢谢你。

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

感谢所有提供帮助的人,但我试图弄清楚如何使用 switch 语句来评估基于一系列数值的折扣后成本(与 if 语句无关)。是的,会有很多案例,这将是我的前两个案例。有人会好心地为我提供一个例子,以便我可以填写其余的案例吗?我有很多。谢谢你。

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

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

4

3 回答 3

31

switchC# 中不允许这种用法。

这是一个正确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 if. 请参阅在 C# 中是否不可能在开关中使用小数范围?

于 2013-02-23T22:40:17.330 回答
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方法那么容易,但需要进行测试。

于 2013-02-23T22:49:48.513 回答