Способность по умолчанию StringBuilder

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

32
задан abatishchev 15 December 2011 в 14:12
поделиться

5 ответов

Почтенный J. Стрельба по тарелочкам обеспечила хороший анализ точно этой проблемы:

https://jonskeet.uk/csharp/stringbuilder.html

3
ответ дан 27 November 2019 в 19:58
поделиться

Способность по умолчанию StringBuilder является 16 символами (я использовал Отражатель.NET для обнаружения).

43
ответ дан 27 November 2019 в 19:58
поделиться

[редактирование: в то время вопрос, который спрашивают приблизительно StringList]

, Вы имеете в виду StringCollection? Это использует пустое ArrayList первоначально, таким образом, ответ 0. И у Вас нет опции изменить его. Когда Вы сначала добавляете, что объект, полные переходы к 4, затем использует удваивающуюся стратегию, когда он заполняется.

, Если Вы имеете в виду List<string>, затем это подобно (пустое T[], не ArrayList), но можно инициализировать известный размер, если Вам нужно (т.е. Вы знаете, сколько данных Вы ожидаете). Снова, в первый раз Вы Add к List<T> переходы размера к 4, затем удваивается каждый раз, когда это заполняется.

0
ответ дан 27 November 2019 в 19:58
поделиться

Значение по умолчанию равняется 16, который, кажется, способность по умолчанию любого типа массива или списка в платформе.NET. Чем меньше количества перераспределений, в которых Вы нуждаетесь на своем StringBuilder, тем лучше это. Между тем является ненужным выделить намного больше, чем необходимо, также.

я обычно инстанцирую StringBuilder с некоторым типом грубой оценки относительно заключительного размера StringBuilder. Например, это могло быть основано на некотором итеративном количестве, которое Вы будете использовать позже для создания строки, времена размер, необходимый для каждого объекта в этом повторении.

// where 96 is a rough estimate of the size needed for each item
StringBuilder sb = new StringBuilder ( count * 96 );
for ( int i = 0; i < count; i++ )
{
...
}

, Когда размер StringBuilder является слишком небольшим для записи следующей строки, внутренний массив символов StringBuilder перераспределен к дважды его текущему размеру.

36
ответ дан 27 November 2019 в 19:58
поделиться

читайте слышат приблизительно способность Stringbuilder , существует демонстрационное приложение для доказательства его также.

-1
ответ дан 27 November 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: