I have a object with properties that are expensive to compute, so they are only calculated on first access and then cached.
private List notes;
A two-line option with C# 8 and null-coalescing assignment:
private List<Note>? notes; public List<Note> Notes => notes ??= CalcNotes();