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

时间:2009-12-10 16:32:41

标签: c# design-patterns

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

private decimal? _blah;
private decimal Blah
{
    get
    {
        if (_blah == null)
            _blah = InitBlah();
        return _blah.Value;
    }
}

此方法有名称吗?

5 个答案:

答案 0 :(得分:16)

Lazy initialisation.

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

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

答案 1 :(得分:10)

延迟加载,延迟初始化等

Noet InitBlah应该(在这种情况下)理想地返回decimal,而不是decimal?,以避免它被多次调用的可能性,因为它是合法的null。

答案 2 :(得分:1)

答案 3 :(得分:0)

这称为延迟初始化

答案 4 :(得分:-1)

懒惰的初始化程序