C#/C# 강의 정리

C# mutable type, immutable type

민트코코넛 2020. 12. 27. 00:53
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);
    }
}

 

< 추가 공부 필요 >

728x90