−두 번 얻은 객체의 참조가 같은지 확인한다.
using System;
using System.Collections.Generic;
using System.Linq;
Console.WriteLine(ReferenceEquals(AppCatalog.Instance, AppCatalog.Instance));
sealed class AppCatalog
{
private static readonly Lazy<AppCatalog> shared = new(() => new AppCatalog());
private AppCatalog() { }
public static AppCatalog Instance => shared.Value;
public string Version => "v1";
}
+공유할 객체의 예로 버전 문자열만 가진 AppCatalog를 쓰고, 두 번 얻은 참조가 같은지 확인한다.
using System;
using System.Collections.Generic;
using System.Linq;
Console.WriteLine(ReferenceEquals(AppCatalog.Instance, AppCatalog.Instance));
// 생성 경로를 모아 호출부마다 별도 분류표를 만들지 않게 한다.
sealed class AppCatalog
{
private static readonly Lazy<AppCatalog> shared = new(() => new AppCatalog());
private AppCatalog() { }
// Lazy<T>가 첫 초기화를 동기화하고, 이 정적 필드를 쓰는 호출은 같은 객체를 받는다.
public static AppCatalog Instance => shared.Value;
public string Version => "v1";
}