The async allows you to use await in your method by creating a state machine. If you can control the return of an asynchronous task without using it, you can continue and delete it, since it has some (very small) overhead. Keep in mind that this is only useful in a few cases. Your return await is one of them.
Another difference is how exceptions are handled. If there is an exception in the synchronous part of the method and it is marked as async , the exception will be saved in the returned task. Without a keyword, an exception will be thrown regularly. For example, in this case there is a big difference:
var task = Get(); // unhandled exception without async try { var result = await task; // handled exception with async } catch { }
My recommendation is to use the async , even if you absolutely do not need *, because most developers do not understand the difference, and the value in optimization is mostly insignificant.
* If you and your teammates do not know what you are doing.
source share