Given the following method:
public async Task DoSomethingAsync() {
// do some work
await OpenSomeFileAsync();
return new MyObject();
Yes, there is a difference: in the first form, you have an extra level of Task, which brings absolutely nothing useful.
The first form is basically equivalent to this:
Task> task1 = Task.Factory.StartNew>( DoSomethingAsync);
Task> task2 = await task1;
var myObject = await task2;
So it doesn't really make sense: you're creating a task that just... creates another task.