static void Main(string[] args) { Console.Clear(); Figura ofig = null; // este objeto no fue instanciado todavia //Dentro del while->switch, se instanciara en Circulo, Cuadrado, segun la opcion //que se haya elegido. while (true) { Console.Write("\nSeleccione una opcion: \n"); Console.WriteLine("0-Salir"); Console.WriteLine("1-Circulo"); Console.WriteLine("2-Triangulo"); Console.WriteLine("3-Cuadrado"); Console.WriteLine("4-Rectangulo\n"); Console.Write("Opcion: "); //string opcion = Console.ReadKey().ToString(); //Lee hasta la primera letra, pero readKey es char, lo casteo a string string opcion = Console.ReadLine().ToString(); //Otra alternativa //Si uso con Key, el if de abajo no va a funcionar int output; if (int.TryParse(opcion, out output)) { float output2; if (output == 0) { break; } else { switch (output) { case 1: Console.Write("\nIngrese el radio: "); while (true) { opcion = Console.ReadLine().ToString(); if (float.TryParse(opcion, out output2)) { //Circulo circ = new Circulo(output2); ofig = new Circulo(output2); break; } else { Console.Write("Ingrese nuevamente el radio: "); } } break; case 2: Console.Write("\nIngrese la base: "); while (true) { opcion = Console.ReadLine().ToString(); if (float.TryParse(opcion, out output2)) { float baseaux = output2; Console.Write("\nIngrese la altura: "); while (true) { opcion = Console.ReadLine().ToString(); if (float.TryParse(opcion, out output2)) { Triangulo trian = new Triangulo(baseaux, output2); break; } else { Console.Write("\nIngrese nuevamente la altura: "); } } break; } else { Console.Write("Ingrese nuevamente el radio: "); } } break; case 3: Console.Write("\nIngrese el lado: "); while (true) { opcion = Console.ReadLine().ToString(); if (float.TryParse(opcion, out output2)) { //Cuadrado cuad = new Cuadrado(output2); ofig = new Cuadrado(output2); break; } else { Console.Write("\nIngrese nuevamente el lado: "); } } break; case 4: Console.Write("\nIngrese el lado A: "); while (true) { opcion = Console.ReadLine().ToString(); if (float.TryParse(opcion, out output2)) { Console.Write("\nIngrese el lado B: "); float auxLadoA = output2; while (true) { if (float.TryParse(opcion, out output2)) { break; } else { Console.Write("Ingrese nuevamente ladoB: "); } } break; } else { Console.Write("Ingrese nuevamente ladoA: "); } } break; } Console.WriteLine("\n{0} es el Area de la figura\n", ofig.calcularArea()); } } else //Cuando no lo puede parsear { Console.WriteLine("\nIngrese la opcion correcta"); } //Intenta parsear opcion, si lo parsea bien, (convertirlo a int) //el resultado lo devuelve en output, y devuelve true, de lo contrario false } //Console.Read(); }