Hola
@Meta !
Creo que tu codigo no esta tan mal como piensas, creo que la optimización que quieres hacer va de mano de la correcta modularización.
Los menu tienen que ser con el Switch/Case como estas haciendo, pero mas que nada como en la parte que tienes Case: OpcionA(); digamos, que dependiendo la opcion que el usuario pulsa, redirija a una función.
Puedes hacer una función por cada menu/submenu.
Llamas a MenuPrincipal(); para ir a ahi. Esta función podria encargarse de Printear las opciones y evaluar la condición con el switch o podrias separarlo en
public void MenuPrincipal(){
ImprimirOpciones();
tecla = Console.ReadKey(true).Key;
EvaluarOpcionMenuPrincipal(tecla);
}
En donde el usuario pulsa la opción 3 y esta función evalua en el switch y redirige a la MenuPrincipalOpcion3();
De esta manera tienes la función MenuPrincipal con 3 lineas y a simple vista sabes exactamente que hace: 1-Muestra opciones 2-Lee una tecla 3-Evalua la opción
Estas usando en este caso programación estructurada, sin sacarle probecho a la potencia de C# con la programación orientada a objetos, te recomiendo que a futuro consideres leer mas sobre POO.
Espero haberme explicado bien y que te sirvan mis consejos !
Saludos
