Notice
Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Today
Total
Archives
관리 메뉴

cyphen156

C# 문자열 변수 할당 최적화 본문

프로그래밍/C#

C# 문자열 변수 할당 최적화

cyphen156 2025. 4. 1. 12:52
namespace _25._04._01_Divide_conquer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string str1 = "Hello";
            string str2 = "Hello";

            if (str1 == str2)
            {
                Console.WriteLine();
            }
            string str3 = str1;
        }
    }
}

만약 다음과 같은 코드가 있다고 생각해보자

str1과 str2의 주소는 서로 다르지만 값은 같은 것을 가리키고 있다. 

그리고 이 문자열 "Hello"는 메모리 최적화를 위해 컴파일러가 변수 str1과 str2를 얕은 복사를 통해 값 참조하도록 만든다.

이러한 기능이 가능한 이유는 C#에서는 모두 오브젝트에서 파생되는 클래스 형식이기 때문이다.

이것이 왜 궁금해졋냐? 는 강사님이 설명하면서 얕은 복사라고 알려주면서 str2를 삭제해버렸기 때문인데

실제로 컴파일러가 변수가 선언만 하고 사용되지 않는 경우는 코드를 지워서 최적화 하지만, 얕은 복사라는 이유만으로  

변수를 지우지는 않는다.

그렇기 때문에 이에 대해 문의 했고, 강사님이 집중한 것은 변수 자체에 할당되는 값이 같다. 라는 것에 집중한 것이었고, 

내가 집중한 것은 변수 주소 자체는 다르지만 변수에 할당된 값은 같다. 라는 차이가 생겼다.