Instrukcja warunkowa

0

Może ktoś ma jakiś inny pomysł na zapis poniższego kodu

if (tapValue > 0 && tapValue <= 4)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(tapValue * 12.50) + " zł/m-c";

                        }
                        else if (tapValue == 5)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(57.0) + " zł/m-c";
                        }
                        else if (tapValue == 6)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(58.0) + " zł/m-c";
                        }
                        else if (tapValue == 7)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(59.0) + " zł/m-c";
                        }
                        else if (tapValue == 8)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(60.0) + " zł/m-c";
                        }
                        else if (tapValue == 9)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(61.0) + " zł/m-c";
                        }
                        else if (tapValue == 10)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(62.0) + " zł/m-c";
                        }
                        else
                        {
                            label2.Text = "";
                        }; 

Głównie chodzi mi od pozycji 6 do 10, czy jest możliwość innego rozpisania tego (krótszego).

0

Jeżeli wartości "zapłacisz..." są stałymi to co za problem je wyliczyć z enumu?

 
if(tapValue > 4) 
      label2.Text = 52 + tabValue;

Ale nawet taki kod jest brzydki. Sztywne wpisywanie takich wartości to proszenie się o kłopoty.

4

Może coś takiego?

Func<double, string> formatText = value => string.Format("zapłacisz: {0:D2} zł/m-c", value);
            
if (tapValue > 0 && tapValue <= 4)
{
    label2.Text = formatText(tapValue * 12.5);
}
else if (tapValue <= 10)
{
    label2.Text = formatText(tapValue + 52);
}
else
{
    label2.Text = string.Empty;
}
0

Albo switch.

[EDIT]

Poza tym skąd wywnioskowaliście, że różnica to 52? Tak jest teraz, w tym przypadku. Ale za miesiąc mogą być już zupełnie inne liczby. Tak naprawdę to te wartości powinny być brane z jakiejś bazy.

0

Ja bym co najwyżej tą stałą formułkę zapisał do jakiegoś stringa. Pierwszy wariant "if", potem "else" i switch, wygląda przyjazniej. Może kod jest trochę przydługawy, ale przynajmniej czytelny. Jakbyś miał tych wariantów 100 to bym się wtedy zaczął przejmować, a tak przynajmniej za miesiąc będziesz wiedział co ten fragment kodu robi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1