К сожалению, вы не можете изменить .Net внутреннее представление строки. Я предполагаю, что CLR оптимизирован для многобайтовых строк.
То, с чем вы имеете дело, это знаменитая парадигма Пространственно-временного компромисса , которая гласит, что для получения памяти вам придется использовать больше процессора, или вы может сохранить процессор, используя немного памяти.
Тем не менее, взгляните на некоторые соображения здесь . Если бы я был вами, однажды установив, что прироста памяти вам будет достаточно, попробуйте написать свой собственный «строковый» класс, который использует кодировку ASCII. Это, вероятно, будет достаточно.
UPDATE:
Подробнее о деньгах, вы должны проверить этот пост, " Памяти и строк ", автор легенды StackOverflow Джон Скит, который решает проблему, с которой вы сталкиваетесь. Извините, я не упомянул об этом сразу, мне потребовалось некоторое время, чтобы найти точный пост от Джона.