Проблема в том, что Console.Read
вернет что угодно , когда пользователь нажмет клавишу возврата - в этот момент он вернет (при множественных вызовах) каждый из символов , включая возврат каретки и строку кормить .
Вы можете прочитать строку за раз, а затем взять первый символ:
string line = Console.ReadLine();
// TODO: Handle the user just hitting return...
char buffer = line[0];
(Обратите внимание, что я бы лично использовал StringBuilder
, а не повторную конкатенацию, но это другой вопрос.)