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
반응형
'.NET > C#' 카테고리의 다른 글
C#에서 리팩토링 방법을 설명하시오 | ChatGPT (0) | 2023.10.07 |
---|---|
public class List<T> 혹은 public interface IList<T> 사용하는 이유 | ChatGPT (0) | 2023.09.25 |
string 타입으로 3자리 마다 콤마 생성하는 C# 기본 함수 | ChatGP용 (0) | 2023.09.09 |
@Html.Partial 과 @Html.RenderPartial 특징과 장단점과 사용 방법 | ChatGPT (0) | 2023.09.08 |
C# 코드와 HTML 태그 혼용 시 괄호 처리 Razor 문법 | ChatGPT (0) | 2023.09.05 |