这个属性初始化的C#模式是什么?

Tre*_*ent 7 c# design-patterns

我经常会有具有使用以下模式的属性的对象:

private decimal? _blah;
private decimal Blah
{
    get
    {
        if (_blah == null)
            _blah = InitBlah();
        return _blah.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个方法有名字吗?

Luk*_*keH 16

懒惰的初始化.

.NET 4,当它到达时,将Lazy<T>内置一个类.

private readonly Lazy<decimal> _blah = new Lazy<decimal>(() => InitBlah());
public decimal Blah
{
    get { return _blah.Value; }
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 10

延迟加载,延迟初始化等

Noet InitBlah应该(在这种情况下)理想地返回decimal,不要decimal?避免被多次调用的机会,因为它是合法的null.