Lazy<int> lazyInt = new(() => i);
Console.WriteLine(lazyInt.Value);
Console.WriteLine(lazyInt.Value);
var obj = new { Foo = "Bar" };
Lazy<object> lazyObj = new(() => obj);
obj = new { Foo = "Baz" };
Console.WriteLine(lazyObj.Value);
obj = new { Foo = "Qux" };
Console.WriteLine(lazyObj.Value);
var hasValue = new HasValue { Value = "qwer" };
Lazy<HasValue> lazyHasValue = new(() => hasValue);
hasValue = new() { Value = "asdf" };
Console.WriteLine(lazyHasValue.Value);
Console.WriteLine(lazyHasValue.Value);
hasValue = new() { Value = "tyui" };
Console.WriteLine(lazyHasValue.Value);
public required string Value { get; set; }