title: Can't decide between Task<IActionResult>, IActionResult and ActionResult<Thing>
body: <p>While I do understand the concept of <code>Task</code>, <code>ActionResult</code>, etc. I still feel unsure which would be most intuitive to type in a controller if nothing else is specified.</p>
  
  <p>Taking consideration to be as explicit with a type returned, I should go like this:</p>
  
  <pre><code>[HttpGet] public ActionResult&lt;Thing&gt; Get()
  {
    return Ok(Context.Things);
  }
  </code></pre>
  
  <p>However, going for a generic type of API paradigm I should use this:</p>
  
  <pre><code>[HttpGet] public IActionResult Get()
  {
    return Ok(Context.Things);
  }
  </code></pre>
  
  <p>Finally, respecting the asynchronous nature of the API philosophy I should apply the following:</p>
  
  <pre><code>[HttpGet] public Task&lt;IActionResult&gt; Get()
  {
    return Ok(Context.Things);
  }
  </code></pre>
  
  <p>I can't decide between which is most appropriate in a general, green-field scenario. The first two work seemingly. Intuitively, I'd prefer to go with the third one but since it didn't work (the conversion isn't valid), I got worried that perhaps I'm barking up the wrong binary tree.</p>
  
  <p>Not sure at all how to google it and I'm obtaining all kinds of examples. Uncertain how to judge which ones are of relevance, I prefer to ask.</p>