<p>I have a pseudo-realtime data processing application where I would like to use <code>LazyInit&lt;double&gt;</code> so I don't do calculations I don't need, but <code>LazyInit&lt;T&gt;</code> restricts  T to classes.  I can work around it, but I'd obviously prefer not to.</p>

<p>Does anybody know why this is?</p>

I believe it is because value types are automatically initialized and LazyInit determines if something needs initializing based on if it is null or not. You can get around it by using nullable types.
```
```
LazyInit<double?>
```
```