Разница между строкой и StringBuilder в C # - PullRequest
68 голосов
/ 18 июня 2010

В чем разница между string и StringBuilder?

Кроме того, что может быть примером для понимания?

Ответы [ 13 ]

0 голосов
/ 18 июня 2010

Также сложность конкатенации String составляет O (N2), тогда как для StringBuffer это O (N).

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

0 голосов
/ 18 июня 2010

String (System.String) - это тип, определенный внутри .NET Framework. Класс String не является изменяемым. Это означает, что каждый раз, когда вы выполняете действие с экземпляром System.String, компилятор .NET создает новый экземпляр строки. Эта операция скрыта для разработчика.

System.Text.StringBuilder - это класс, который представляет изменяемую строку. Этот класс предоставляет несколько полезных методов, которые позволяют пользователю управлять строкой, обернутой StringBuilder. Обратите внимание, что все манипуляции выполняются в одном экземпляре StringBuilder.

Microsoft рекомендует использовать StringBuilder, поскольку он более эффективен с точки зрения использования памяти.

0 голосов
/ 18 июня 2010

Строка является неизменным типом.Это означает, что всякий раз, когда вы начинаете объединять строки друг с другом, вы каждый раз создаете новые строки.Если вы делаете это много раз, вы в конечном итоге получаете много кучи и риск нехватки памяти.

Экземпляр StringBuilder используется для возможности добавления строк в один и тот же экземпляр, создавая строку, когдавы вызываете для него метод ToString.

Из-за накладных расходов, связанных с созданием экземпляра объекта StringBuilder, Microsoft заявляет, что его полезно использовать, когда у вас более 5-10 конкатенаций строк.

ДляПример кода, который я предлагаю вам посмотреть здесь:

...