String Vs String Builder:
Прежде всего вы должны знать, в каком собрании живут эти два класса?
Итак,
строка присутствует в System
пространстве имен.
и
StringBuilder присутствует в пространстве имен System.Text
.
Для строка объявление:
Вы должны включить пространство имен System
.
что-то вроде этого.
Using System;
и
Для StringBuilder Объявление:
Вы должны включить пространство имен System.text
.
что-то вроде этого.
Using System.text;
Теперь наступит актуальный вопрос.
В чем разница между string & StringBuilder ?
Основное различие между этими двумя заключается в том, что:
строка является неизменной.
и
StringBuilder является изменяемым.
Итак, давайте теперь обсудим разницу между неизменным и изменяемым
Изменяемый: : означает изменяемый.
Неизменный: : означает, что невозможно изменить.
Например:
using System;
namespace StringVsStrigBuilder
{
class Program
{
static void Main(string[] args)
{
// String Example
string name = "Rehan";
name = name + "Shah";
name = name + "RS";
name = name + "---";
name = name + "I love to write programs.";
// Now when I run this program this output will be look like this.
// output : "Rehan Shah RS --- I love to write programs."
}
}
}
Так что в этом случае мы собираемся изменить один и тот же объект 5 раз.
Итак, очевидный вопрос таков! Что на самом деле происходит под капотом, когда мы меняем одну и ту же строку 5 раз.
Вот что происходит, когда мы меняем одну и ту же строку 5 раз.
давай посмотрим на рисунок.
Explaination:
Когда мы впервые инициализируем эту переменную "name" в "Rehan" i-e string name = "Rehan"
эта переменная создается в стеке "name" и указывает на это значение "Rehan".
после выполнения этой строки: "name = name +" Shah ". Переменная-ссылка больше не указывает на этот объект" Rehan ", теперь она указывает на" Shah "и т. д.
Таким образом, string
является неизменным, что означает, что как только мы создаем объект в памяти, мы не можем его изменить.
Таким образом, когда мы объединяем переменную name
, предыдущий объект остается там в памяти, и создается другой новый строковый объект ...
Итак, из вышеприведенного рисунка у нас есть пять объектов, четыре объекта выброшены, они вообще не используются. Они все еще остаются в памяти, и они занимают объем памяти.
«Сборщик мусора» отвечает за то, что так убирает ресурсы из памяти.
Так что в случае строки в любое время, когда мы манипулируем строкой снова и снова, у нас есть много объектов, созданных и находящихся там в памяти.
Итак, это история строковой переменной.
Теперь давайте посмотрим на объект StringBuilder.
Например:
using System;
using System.Text;
namespace StringVsStrigBuilder
{
class Program
{
static void Main(string[] args)
{
// StringBuilder Example
StringBuilder name = new StringBuilder();
name.Append("Rehan");
name.Append("Shah");
name.Append("RS");
name.Append("---");
name.Append("I love to write programs.");
// Now when I run this program this output will be look like this.
// output : "Rehan Shah Rs --- I love to write programs."
}
}
}
Так что в этом случае мы собираемся изменить один и тот же объект 5 раз.
Итак, очевидный вопрос таков! Что на самом деле происходит под капотом, когда мы меняем один и тот же StringBuilder 5 раз.
Вот что происходит, когда мы меняем один и тот же StringBuilder 5 раз.
давай посмотрим на фигуру.
Explaination:
В случае объекта StringBuilder. Вы не получите новый объект. Тот же объект будет изменен в памяти, поэтому даже если вы измените объект и, скажем, 10000 раз, у нас останется только один объект stringBuilder.
У вас нет большого количества мусорных объектов или не-связанных объектов stringBuilder, потому что это может быть изменено. Это изменчивое значение, что оно меняется со временем?
Отличия:
- String присутствует в пространстве имен System, где присутствует Stringbuilder
в пространстве имен System.Text.
- Строка неизменна, так как StringBuilder имеет значение mutabe.