あいさつ今日、怠惰な初期化コードを実行していて、null合体演算子を使用してこれを実行しないのはなぜかと思いました。短いですが、この方法で実行するためのオーバーヘッドや追加コストがあると思いました。
以下は、遅延初期化に使用されるより一般的な形式と、null合体演算子を使用する形式を示す簡略化されたサンプルコードです。それらはまったく同じ結果をもたらし、同等に見えます。私の最初の考えは、オブジェクトが作成された後、を使用してそれ自体に追加の割り当てがあるということ??です。これは問題ではなく、コンパイラ/ JITはこれを何らかの方法で最適化しますか、何かもっと悪質なことが起こっているので、で怠惰な初期化を行うべきではありません??。または、完全に安全で、悪いモジョが発生することはありません。
private MyLazyObject _lazyObject;
public MyLazyObject GetMyLazyObjectUsingMoreCommonMethod()
{
    if (_lazyObject != null)
        return _lazyObject;
    _lazyObject = new MyLazyObject();
    return _lazyObject;
}
public MyLazyObject GetMyLazyObjectUsingNullCoalescingOpMethod()
{
    _lazyObject = _lazyObject ?? new MyLazyObject();
    return _lazyObject;
}