Lazy loaded property readability I currently have code that looks like this

private string _stringField;

protected string StringField
{
    get
    {
        if (_stringField == null)
            _stringField = GetStringField();
        return _stringField;
    }
}


ReSharper is suggesting I change the property to:  

protected string StringField
{
    get
    {
        return _stringField ?? (_stringField = GetStringField());
    }
}


This isn't an idiom I've seen before and probably would have to think about the first time I saw it; is this something I should be concerned would confuse other people too?
?? is well known operator in C#.  It doesn't confuse but reduce coding. 

Both snippets have same meaning.

But if it is .NET 4.0 onwards, i would rather use Lazy&lt;T&gt;.

private Lazy&lt;string&gt; lazyStringField = new Lazy&lt;string&gt;(GetStringField);
protected string StringField
{
    get
    {
        return lazyStringField.Value;
    }
}