One-line lazy initialization

Is this too obscure?

public class MyObject
{
    private MyExpensiveObject _myExpensiveObject;

    public MyExpensiveObject ExpensiveObject
    {
        get { return _myExpensiveObject ??
                     (_myExpensiveObject = new MyExpensiveObject()); }
    }
}

Comments (2)

  1. Jan! wrote::

    No, seems perfectly clear to me.

    Tuesday, February 23, 2010 at 11:24 pm #
  2. Eber wrote::

    I use that all the time, even for non-expensive objects

    Thursday, February 25, 2010 at 8:50 am #