Question: I believe that C# stops evaluating an if statement condition as soon as it is able to tell the outcome. So for example:

```
if ( (1 < 0) && check_something_else() )
    // this will not be called

```

Since the condition `(1 < 0)` evaluates as `false`, the `&&` condition cannot be met, and `check_something_else()` will not be called.

How does C# evaluate an if statement with asynchronous functions? Does it wait for both to return? So for example:

```
if( await first_check() && await second_check() )
    // ???

```

Will this ever be short-circuited?

Answer: 
This is super simple to check.

Try this code:

```
async Task Main()
{
    if (await first_check() && await second_check())
    {
        Console.WriteLine("Here?");
    }
    Console.WriteLine("Tested");
}

Task<bool> first_check() => Task.FromResult(false);
Task<bool> second_check() { Console.WriteLine("second_check"); return Task.FromResult(true); }

```

It outputs "Tested" and nothing else.
Yes it does. You can check it yourself using [sharplab.io](https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA+ABATARgLABQGADAAQY4CsA3IRgMzlakDCpA3oad+YxgBzkkpALIAKAJQcuPWQEsAZmIwBOIQDoAYlAgBbAEowAzgFcANgBcxFqCZhSAZA/JqMSLToPHzVhQEMzI3sJGVkw8hwVSVoCWQBfQjigA===), the following:

```
public async Task M() {
    if(await Task.FromResult(true) && await Task.FromResult(false))
        Console.WriteLine();
}

```

Is effectively transformed by the compiler into something like:

```
TaskAwaiter<bool> awaiter;

... compiler-generated state machine for first task...

bool result = awaiter.GetResult();

// second operation started and awaited only if first one returned true    
if (result)
{
     awaiter = Task.FromResult(false).GetAwaiter();
...

```

Or as a simple program:

```
Task<bool> first_check() => Task.FromResult(false);
Task<bool> second_check() => throw new Exception("Will Not Happen");

if (await first_check() && await second_check()) {}

```

Second example on [sharplab.io](https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA+ABATARgLABQGADAAQY4CsA3IRgMzlakDCpA3oad+YxgBzkkpALIAKAJQceM0l1ncAlgDNSYjAE5SyxVADOAFwD6YABYwwAa0mkAZLfJa9FiADsAJifNXJE+QpkKDUlaAhkAX385MJ4MJAAeYAgIABsAPm1dQy8LaykAXgy4gDoAMSgIAFsAJRg9AFcUgzFlAEMU5wlQwISk1IznSA8cnwKMg1MKgHdSVxgZgFEEMBgABwNFNzEAIgB1RRSU0gA5CANSAAlW1dWYV22uwnCgA==).