C# の Lazy<T>、LazyInitializer.EnsureInitialized、ダブルチェックロッキングの比較
基本は Lazy<T> を使ってください。ファクトリを 1 回だけ実行し、例外をキャッシュし、初期化後の読み取りは計測できないほど軽量です。多数のフィールドや配列スロットを遅延初期化していて、値ごとの追加オブジェクトを避けたい場合は LazyInitializer.EnsureInitialized を使います。手書きのダブルチェックロッキングは、.NET 10 ではほとんど割に合いません。