Lazy は、標準的な怠zyなインスタンス化よりもどのような利点を提供しますか?
-
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>
, 、あなたの意図は明確です。
所属していません StackOverflow