Строки в C # /. Net являются неизменяемыми, поэтому нет смысла (или какого-либо способа) предварительно выделять пространство для хранения большего количества символов при построении строки. Если вы добавляете строку, вы получаете новую строку обратно, она создает новое пространство для хранения всей новой строки и не перераспределяет. Что касается столбцов SQL, вы должны сделать их точной длиной строки, если вы знаете ее заранее (char (N)) или использовать переменные символьные данные (varchar (N)), с N выбранным в качестве подходящего максимума. Я не вижу смысла в том, чтобы держать их в силе двух - SSMS по умолчанию равняется 50, когда вы создаете столбец varchar, так что, очевидно, и Microsoft не делает.
Единственное место, в котором предварительное распределение может иметь значение, - это что-то вроде StringBuilder или предварительное распределение размера коллекции. Опять же, он должен быть рассчитан таким образом, чтобы его не нужно было изменять, но он должен быть близок к его фактическому использованию, если оно известно. Если неизвестно, либо пропустите начальный размер или сделайте его достаточно большим, чтобы вместить большинство случаев.