I recently started using Lazy throughout my application, and I was wondering if there are any obvious negative aspects that I need to take into account when using Lazy<
Lazy is used to preserve resources while not really needed. This pattern is pretty good but implementation can be useless.
Bigger the resource is, usefull is this pattern.
A disavantage to use Lazy class is the non transparency of usage. Indeed, you have to maintain everywhere an additional indirection (.Value). When you just need an instance of real type, it is forced to load even if you dont need to use it directly.
Lazy is for lazy developpement gaining productivity but this gain can be lost by high usage.
If you have a real transparent implementation (using proxy pattern for exemple) it get rid of disavantage and it can be very usefull in many case.
Concurrency must be consider in an other aspect and not implemented by default in your type. It must be included only in client code or type helpers for this concept.