본문 바로가기

.NET/C#

C# System.Lazy 사용 이유 및 사용 예제 코드 | ChatGPT

728x90
반응형

System.Lazy

C#에서 지연 초기화(lazy initialization)를 구현하기 위한 유용한 클래스입니다.

지연 초기화란

객체가 처음으로 필요한 시점에 생성되도록 하는 패턴을 말합니다.

이를 통해 자원을 효율적으로 사용하거나 성능을 향상시킬 수 있습니다.

System.Lazy를 사용하는 이유

성능 향상

객체 생성이 비용이 크거나 초기화에 시간이 많이 소요되는 경우, 프로그램 시작 시점에서 객체를 미리 생성하지 않고 필요한 시점에 생성하여 초기 부하를 줄일 수 있습니다.

자원 관리

리소스나 연결과 같은 자원을 필요한 시점에 생성하면서, 필요하지 않을 때는 불필요한 리소스 사용을 방지할 수 있습니다.

복잡성 감소

복잡한 초기화 로직을 가진 객체의 경우, 이를 미리 생성하지 않고 필요한 시점에 초기화하면 코드를 간결하게 유지할 수 있습니다.

System.Lazy의 사용 예제 코드

using System;

class Program
{
    static void Main()
    {
        // Lazy<T>를 사용하여 문자열을 지연 초기화
        Lazy<string> lazyString = new Lazy<string>(() =>
        {
            Console.WriteLine("Lazy string initializing...");
            return "Hello, Lazy World!";
        });

        Console.WriteLine("Program started.");

        // 필요한 시점에 지연 초기화가 발생
        string message = lazyString.Value;

        Console.WriteLine("Message: " + message);

        // 이미 초기화되었기 때문에 더 이상 초기화 로직이 실행되지 않음
        string cachedMessage = lazyString.Value;

        Console.WriteLine("Cached Message: " + cachedMessage);
    }
}

위 코드에서는 System.Lazy<string>을 사용하여 문자열을 지연 초기화하고 있습니다.

lazyString 변수가 처음으로 Value 프로퍼티에 접근할 때까지 초기화 로직이 실행되지 않습니다.

따라서 첫 번째 Value 접근 시에 "Lazy string initializing..."이 출력되며 문자열이 초기화됩니다.

이후에는 이미 초기화되었기 때문에 초기화 로직이 다시 실행되지 않고 캐시된 값을 반환합니다.

출처 | ChatGPT

728x90
반응형