Если значение нетривиально для вычисления, я обычно предпочитаю использовать метод (GetNotes()
). Ничто не мешает вам кэшировать значение с помощью метода, плюс вы можете добавить атрибут [Pure]
(.NET 4), если это применимо, чтобы указать, что метод не изменяет состояние объекта.
Если вы решили остаться со следующим, я рекомендую:
Когда у вас есть лениво оцененное свойство, вы должны добавить следующий атрибут, чтобы гарантировать, что работа в отладчике ведет себя так же, как и работа вне него:
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
Также, начиная с .NET 4, вы можете использовать следующее:
// the actual assignment will go in the constructor.
private readonly Lazy<List<Note>> _notes = new Lazy<List<Note>>(CalcNotes);
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public List<Note> Notes
{
get { return _notes.Value; }
}