Я делаю много строковых манипуляций на С#, и действительно нужно, чтобы строки сохранялись на один байт на символ. Это связано с тем, что мне требуется гигабайт текста одновременно в памяти, что вызывает проблемы с низкой памятью. Я точно знаю, что этот текст никогда не будет содержать символы, отличные от ASCII, поэтому для моих целей тот факт, что System.String и System.Char хранят все как два байта на символ, являются ненужными и реальной проблемой.
Я собираюсь начать кодирование своих собственных классов CharAscii и StringAscii - строка будет в основном содержать свои данные в виде байта [] и вызывать методы манипуляции строками, аналогичные тем, которые делает System.String. Однако, похоже, это большая работа, чтобы сделать что-то, что кажется очень стандартной проблемой, поэтому я действительно размещаю здесь, чтобы проверить, что еще нет более простого решения. Есть ли, например, каким-то образом я могу заставить System.String внутренне хранить данные как UTF8, которые я не заметил, или каким-то другим способом проблемы?