public static void Long_cmd() { bool r = true; while (r) { #region Comandos sbyte[] c = new sbyte[8] { 1, 2, 3, 4, 5, 6, 7, 8 }; //Utilizamos sbyte en vez de int porque utilizamos valores pequeños y no es necesario reservar mucho espacio en la memoria RAM, estos valores van de -128 a 127, por lo que aún nos sobra. Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("\nComandos disponibles:\n{0}: Para convertir Metros.", c[0]); Console.WriteLine("{0}: Para convertir kilometros.\n{1}: Para convertir Millas.", c[1], c[2]); Console.WriteLine("{0}: Para convertir Millas náuticas.\n{1}: Para convertir Pulgadas.", c[3], c[4]); Console.WriteLine("{0}: Para convertir Yardas.\n{1}: Para convertir Pies", c[5], c[6]); Console.WriteLine("{0}: Para volver al menú principal del conversor", c[7]); #endregion #region if-else sbyte i = 1; try { Console.Write(">> "); i = Convert.ToSByte(Console.ReadLine()); } catch (Exception e) when(e.GetType() != typeof(FormatException)) { Console.WriteLine(e.Message); } catch (FormatException e) { Console.WriteLine("El valor introducizo no es numérico."); Console.WriteLine(e.Message); } finally { if (i == (c[0])) { Transformador.CmdM();//Metros al resto r = true; } else if (i == (c[1])) { Transformador.Cmdkm();//Kilometros al resto r = true; } else if (i == (c[2])) { Transformador.CmdMi();//Millas r = true; } else if (i == (c[3])) { Transformador.CmdNmi();//Millas-Millas Náuticas r = true; } else if (i == (c[4])) { Transformador.CmdInc();//Pulgadas r = true; } else if (i == (c[5])) { Transformador.CmdYd();//Yardas r = true; } else if (i == (c[6])) { Transformador.CmdPie();//Pies r = true; } else if (i == (c[7]))//Vamos a ordenar que el texto de entrada sea transformado en minusculas { Console.Clear(); Console.ForegroundColor = ConsoleColor.Green; r = false; //Importante no poner el r como true, ya que entonces no saldríamos del bucle } else { Console.WriteLine("\nComando no encontrado, compruebe su ortografía."); r = true; } } #endregion } }