public IReadOnlyCollection<T> Values
{
 get { return _values.Value; }
}
private Lazy<List<T>> _values = new Lazy<List<T>>(() => new List<T>());

これで十分だろ?
Lazy 使わずに null 判定して作成するのもありだけど