Очевидно, что пользователь может ввести все, что не будет проанализировано как один byte
. Попробуйте использовать метод Byte.TryParse () , который не генерирует исключение и просто возвращает флаг состояния.
Вы можете пойти дальше и добавить больше анализа для ввода пользователя, если необходимо:
// Initialize by a default value to avoid
// "Use of unassigned local variable 'MainMenuSelection'" error
byte mainMenuSelection = 0x00;
string input = Console.ReadLine();
// If acceptable - remove possible spaces at the start and the end of a string
input = input.Trim();
if (input.Lenght > 1)
{
// can you do anything if user entered multiple characters?
}
else
{
if (!byte.TryParse(input, out mainMenuSelection))
{
// parsing error
}
else
{
// ok, do switch
}
}
Также, возможно, вам нужен только один символ, а не байт?
Тогда просто сделайте:
// Character with code 0x00 would be a default value.
// and indicate that nothing was read/parsed
string input = Console.ReadLine();
char mainMenuSelection = input.Length > 0 ? input[0] : 0x00;