string — immutable. StringBuilder — mutable.
string:
1string s = "Hello";2s += " World"; // Creates NEW string3s += "!"; // Creates another NEW string4// 3 string objects created!
StringBuilder:
1var sb = new StringBuilder();2sb.Append("Hello");3sb.Append(" World");4sb.Append("!");5string result = sb.ToString();6// Only 1 final string created
Performance comparison:
1// Bad2string s = "";3for (int i = 0; i < 1000; i++)4 s += i;56// Good7var sb = new StringBuilder();8for (int i = 0; i < 1000; i++)9 sb.Append(i);10string s = sb.ToString();