728x90
반응형
§ mutable & immutable §
◈ mutable type 특징
- 변수가 생성이 되면, 값을 변경할 수 있다.
1. 스택 메모리에 공간과 값을 생성
2. 재 선언할때마다 값을 덮어씌워서 저장한다.
class MyClass
{
static void Main(string[] args)
{
int a = 1;
a = 3;
Console.WriteLine(a);
}
}
◈ immutable type 특징
- 변수가 생성이 되면, 값을 변경할 수 없다.
1. 스택에 변수 공간 생성
2. 힙 메모리에 값 공간 생성, 참조하는 형식
3. 변수의 값을 변경하면, 힙의 원래 값이 변경되는 것이 아니라
4. 힙에 또 다른 값의 공간을 생성하여 참조한다.
class MyClass
{
static void Main(string[] args)
{
string b = "aaa"; // 참조 형식
b = "ccc";
for (int i = 0; i < 100000 ; i++)
{
b = b + i.ToString();
}
// 힙 메모리가 조건을 만족할때까지 계속 소모된다.
// 해결 방법
StringBuilder b = new StringBuilder();
// string빌더를 활용한다.
// StringBuilder : 값의 변경이 가능한 문자열 class
for (int i = 0; i < 100000; i++)
{
b.Append(i.ToString());
}
string b1 = b.ToString();
//Console.WriteLine(b);
Console.WriteLine(b1);
}
}
< 추가 공부 필요 >