C#-开关函数中的较高或较低的语句

时间:2019-05-20 14:49:25

标签: c#

if(artikelen > 50)有效。我想我知道为什么,但是我不知道如何解决问题。

开关功能,但我不知道如何在该功能中使用“ <或>”。

C#:

private void button1_Click(object sender, EventArgs e) {
    double bruto = double.Parse(textBox1.Text);
    double artikelen = double.Parse(textBox2.Text);
    double loon;
    if (artikelen < 10) {
        double twee = bruto + (bruto / 100 * 2);
        loon = twee;
        textBox3.Text = loon.ToString();
    }
    if (artikelen >= 10 && bruto < 50) {
        double vijf = bruto + (bruto / 100 * 5);
        loon = vijf;
        textBox3.Text = loon.ToString();
    }
    if (artikelen > 50) {
        double tien = bruto + (bruto / 100 * 10);
        loon = tien;
        textBox3.Text = loon.ToString();
    }
}

private void textBox1_TextChanged(object sender, EventArgs e) {
}

2 个答案:

答案 0 :(得分:0)

对于C#7,您可以在switch语句中使用小于或大于的语句:

switch (value)
{
    case var _ when value < 10:
        // something
        break;
    case var _ when (value >= 10 && value < 50):
        // something
        break;
    case var _ when value > 50:
        // something
        break;
    default:
        // something
        break;
}

对于多个输入,请查看C#8中的tuple patterns

答案 1 :(得分:0)

看起来像很多重复的代码。

我将其拆分为:

cmd | split -l1 -d - output

获取因子。然后做数学:

decimal GetFactor( decimal artikelen )
{   // order is important!
    if( artikelen >= 50 ) return 10m;
    if( artikelen >= 10 ) return 5m;
    return 2m;
}

产生

decimal GetLoon( decimal bruto, decimal factor ) // With factor from above result
{
    return bruto + (bruto / 100m * factor);
}

一些其他要点:

  • 我认为这些是货币金额。 =>使用textBox3.Text = GetLoon( bruto, GetFactor( artikelen) ).ToString(); ,而不是浮点数!
  • 始终验证用户输入。如果无法解析值怎么办?如果artikelen <0会怎样?