Lazy は、標準的な怠zyなインスタンス化よりもどのような利点を提供しますか?

StackOverflow https://stackoverflow.com/questions/6813055

  •  25-10-2019
  •  | 
  •  

質問

この例を考慮して、怠zyな初期化の2つの可能な方法を示しています。スレッドセーフであることを除いて、怠zyを使用するという具体的な利点はありますかu003CT>ここ?

class Customer {
    private decimal? _balance2;
    private static decimal GetBalanceOverNetwork() {
        //lengthy network operations
        Thread.Sleep(2000);
        return 99.9M;
    }

    public decimal? GetBalance2Lazily() {
        return _balance2 ?? (_balance2 = GetBalanceOverNetwork());
    }

    private readonly Lazy<decimal> _balance1 = new Lazy<decimal>(GetBalanceOverNetwork);

    public Lazy<decimal> Balance1 {
        get { return _balance1; }
    }
}

アップデート:

上記のコードを簡単な例として検討してください、データ型は無関係です、ここでのポイントは怠zyを比較することですu003CT>標準的な怠zyな初期化。

役に立ちましたか?

解決

それは意味的により正確です。

使用するとき Nullable<decimal>, 、あなたが言うことは、の価値です null 「未評価」状態を表します。これは一般的な変換ですが、それでも任意です。他にも数百万の解釈方法があります null, 、したがって、おそらく、この場合にヌルが何を意味するかを(ドキュメントまたは少なくともコメントとして)どこかで説明する必要があります。

それどころか、使用するとき Lazy<decimal>, 、あなたの意図は明確です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top