How do I turn these if statements into switch-case C# -


this question has answer here:

i need turn these if statements switch-case statements. syntax errors when do. tried using smth. like:

switch(field.text){ case field.text.contains("+"): field.text=a+b; break; }  

but "field.text.contains("+")" has syntax error.

i need help, please. code:

this calculator app, doing simple 2 operators math.

this method splits string in 2 in order find 2 entered numbers :

public void getnumbers(ref string first, ref string second, int place, out int firstnumber, out int secondnumber) {     if (place > 0)     {         first = resultfiled.text.substring(0, place);          second = resultfiled.text.substring(place + 1);     }      int32.tryparse(first, out firstnumber);     int32.tryparse(second, out secondnumber); }  private void calculate_click(object sender, eventargs e) {      string first = null;     string second = null;     int result = 0;     int place = 0;     int firstnumber = 0;     int secondnumber = 0; 

identify operator in entered numbers in calculator form, find is. split string in 2, find first , last number. math operation.

add 2 numbers

    if (resultfiled.text.contains("+"))     {         place = resultfiled.text.indexof("+");          getnumbers(ref first, ref second, place, out firstnumber, out secondnumber);          result = firstnumber + secondnumber;          resultfiled.text = result.tostring();     }      else     { 

subtract 2 numbers

        if (resultfiled.text.contains("-"))             {             place = resultfiled.text.indexof("-");             getnumbers(ref first, ref second, place, out firstnumber, out secondnumber);              result = firstnumber - secondnumber;              resultfiled.text = convert.tostring(result);         }      else     { 

multiply 2 numbers

        if (resultfiled.text.contains("*"))         {             place = resultfiled.text.indexof("*");             getnumbers(ref first, ref second, place, out firstnumber, out secondnumber);              result = firstnumber * secondnumber;              resultfiled.text = convert.tostring(result);         }          else         {  

divide 2 numbers

            if (resultfiled.text.contains("/"))             {                 place = resultfiled.text.indexof("/");                 getnumbers(ref first, ref second, place, out firstnumber, out secondnumber);                  try                 {                     result = firstnumber / secondnumber;                 }                 catch (dividebyzeroexception exc)                 {                     messagebox.show(exc.message);                 }                  resultfiled.text = convert.tostring(result);             }          }       }    }  }  

first create enum mathop:

  enum mathop {null, add, sub, mult, div }    

then:

  var op =       txt.contains("+")? mathop.add:      txt.contains("-")? mathop.sub:      txt.contains("*")? mathop.mult:      txt.contains("/")? mathop.div:                          mathop.null;    switch (op)   {       case (mathop.add):          ...        case (mathop.sub):          ...    } 

Comments