title: Does C# perform short circuit evaluation of if statements with await?
body: <p>I believe that C# stops evaluating an if statement condition as soon as it is able to tell the outcome. So for example:</p>
  <pre><code>if ( (1 &lt; 0) &amp;&amp; check_something_else() )
      // this will not be called
  </code></pre>
  <p>Since the condition <code>(1 &lt; 0)</code> evaluates as <code>false</code>, the <code>&amp;&amp;</code> condition cannot be met, and <code>check_something_else()</code> will not be called.</p>
  <p>How does C# evaluate an if statement with asynchronous functions? Does it wait for both to return? So for example:</p>
  <pre><code>if( await first_check() &amp;&amp; await second_check() )
      // ???
  </code></pre>
  <p>Will this ever be short-circuited?</p>