Напоминаю про чудесный ValueStringBuilder, который находится в недрах .NET и является internal. Это идеальная вещь для замены StringBuilder на коротких строках. Фактически, он является одним из распространённых подходов к написанию zero-allocation кода. Чтобы его использовать в своём приложении необходимо... просто скопировать его код из репозитория .NET. Штука до боли простая - это ref struct, которая принимает в конструктор Span<char>. Обычно его создают на стеке путём stackallock char[256]. Если в процессе создания строки выяснятся, что переданного Span не хватает - используется честный массив из ArrayPool. internal ref partial struct ValueStringBuilder {
private char[]? _arrayToReturnToPool;
private Span<char> _chars;
private int _pos;
public ValueStringBuilder(Span<char> initialBuffer) {
_arrayToReturnToPool = null;
_chars = initialBuffer;
_pos = 0;
}
... private void Grow(int additionalCapacityBeyondPos) {
int newCap