Возможно ли это? Учитывая, что C # использует неизменяемые строки, можно было бы ожидать, что будет метод, аналогичный следующему:
var expensive = ReadHugeStringFromAFile();
var cheap = expensive.SharedSubstring(1);
Если такой функции нет, зачем беспокоиться о том, чтобы сделать строки неизменяемыми?
Или, альтернативно, если строки уже неизменны по другим причинам, почему бы не предоставить этот метод?
Конкретная причина, по которой я это изучаю, - это анализ файла. Простые парсеры с рекурсивным спуском (например, сгенерированные TinyPG или легко написанные вручную) повсеместно используют Substring. Это означает, что если вы дадите им большой файл для анализа, отток памяти будет невероятным. Конечно, есть обходные пути - в основном сверните свой собственный класс SubString, а затем, конечно же, забудьте о возможности использовать методы String, такие как StartsWith, или библиотеки String, такие как Regex, так что вам нужно также свернуть их собственную версию. Я предполагаю, что генераторы синтаксических анализаторов, такие как ANTLR, в основном делают это, но мой формат достаточно прост, чтобы не оправдать использование такого инструмента монстра. Даже TinyPG, вероятно, является излишним.
Кто-нибудь, пожалуйста, скажите мне, что я пропускаю какой-то очевидный или не очень очевидный стандартный вызов метода C # где-то ...