😺

遅延初期化されるプロパティの書き方

に公開

Semantic Kernel のコードを見ていて、へ~って思ったのでメモです。
?? 演算子と Interlocked.CompareExchange を使って遅延初期化されるプロパティの書き方です。
1 つのパターンとして覚えておくためのメモです。

class MyClass
{
    private List<string>? _lazyInitializedList;

    public List<string> LazyInitializedList =>
        _lazyInitializedList ?? 
        Interlocked.CompareExchange(ref _lazyInitializedList, [], null) ??
        _lazyInitializedList;
}
Microsoft (有志)

Discussion