title: When to use Lazy vs Func
body: <p>I have multiple boolean statements being evaluated. They are evaluated in order from top to bottom. Some boolean statements are expensive to evaluate so I am use lazy on them. Here is the sample code:</p>
  
  <pre><code>bool contactHasPermission = ContactHasPermission(id);
  var contactIsInRole = new Lazy&lt;bool&gt;(() =&gt; IsContactInRole(contactId, roleType)); //Database call
  var contactHasAtLeastXPoints = new Lazy&lt;bool&gt;(() =&gt; ContactHasXPoints(contactId, 100)); //database call
  
  bool permit = contactHasPermission || contactIsInRole.Value || contactHasAtLeastXPoints.Value;
  </code></pre>
  
  <p>As you can see the most expensive statements are in lazy objects. I could have done the same thing using Func. What the the pros and cons of using one over the other?</p>