string κ°μ²΄ μ¬μ©μμ νν νλ μ€μ
ν λ©μλ μμ λ‘컬 λ³μλ€μ κ·Έ λ©μλκ° λλ λ ν΄μ νκ² λλ€. Value νμ μ λ³μλ ν¨μ 리ν΄κ³Ό λμμ μ€νμμ ν΄μ λκ³ , Reference νμ μ λ³μλ GCμ μν΄ νμμ μλ ν΄μ λλ€. μ¬κΈ°μ νν νλ μ€μ μ€ νλλ λ νΌλ°μ€ νμ μ κ°μ²΄λ₯Ό λΆνμνκ² λ무 λ§μ΄ λ§λλ κ²μ΄λ€.
μλ₯Ό λ€μ΄ μλ μμ λ string κ°μ²΄λ₯Ό nκ° μ© κ³μ μμ±νκ³ μλ€.
public string Get1ToN_Bad(int n)
{
string s = "";
for (int i = 1; i <= n; i++)
{
s += i.ToString() + ".";
}
return s;
}
string κ°μ²΄λ μ²μ μμ±λλ©΄ λ΄λΆμ μλ κ·Έ κ°μ λ³κ²½ν μ μλ€. λ°λΌμ μλ‘μ΄ κ°μ΄ λμΌ λ³μμ ν λΉλλ©΄ λ΄λΆμ μΌλ‘ μλ‘μ΄ string κ°μ²΄λ₯Ό λ§λ€κ³ μλ‘μ΄ κ°μ ν λΉν ν λμΌ λ³μμ μΉννκ² λλ€. μ string κ°μ²΄ ν λΉμΌλ‘ μμ string κ°μ²΄λ λΆνμνκ² λμ΄ GCμ μν΄ ν΄μ λλ€. λ§μ½ μ μμ λ₯Ό λ°±λ§, μ²λ§ λ±μΌλ‘ κ³μ μ€ννλ€λ©΄ μ±λ₯μ λ¬Έμ κ° μκΈΈ μ μλ€.
κ·Έλ λ€λ©΄ μ΄λ° λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°ν μ μμκΉ?
κ°μ²΄λ₯Ό μλ‘ ν λΉνμ§ μκ³ λ°μ΄ν°λ₯Ό λ³κ²½ν μ μλ StringBuilderλ₯Ό μ¬μ©νλ κ²μ΄λ€. λ¬Όλ‘ StringBuilderλ λ΄λΆμ μΌλ‘ λ²νΌκ° λΆμ‘±νλ©΄ κΈ°μ‘΄ λ²νΌμ 2κ°μ ν΄λΉνλ μ λ²νΌλ₯Ό ν λΉνκ³ μ¬κΈ°μ λ°μ΄ν°λ₯Ό 볡μ νκ² λλ€. νμ§λ§ ν΄λΉ StringBuilder κ°μ²΄λ₯Ό ν΄μ ν λ€μ μμ±νλ κ²μ μλλ GCκ° μλ§μ κ°μ²΄λ€μ ν΄μ ν΄μΌ νλ λΆλ΄μ μκ² λλ€.
public string Get1ToN_Good(int n)
{
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i++)
{
sb.Append(i.ToString() + ",");
}
return sb.ToString();
}
λν, μ±λ₯ ν₯μμ μν΄ λ―Έλ¦¬ λ²νΌλ₯Ό ν¬κ² ν λΉνλλ‘ capacityλ₯Ό μμ± μ μ§μ ν μ μλ€.