title: When should an `out` parameter be used instead of returning a complex type?
body: <p>When should we use an <code>out</code> parameter in C#?</p>
  
  <p>For example</p>
  
  <pre><code>bool TryGetValue(out object value);
  </code></pre>
  
  <p>vs.</p>
  
  <pre><code>class ReturnType
  {
        public bool Found {get;set;}
        public object Value {get;set;}
  }
  
  ReturnType TryGetValue();
  </code></pre>
  
  <p>Apart from reducing the number of lines of code, when should an <code>out</code> parameter to be used and when it should be returned as return type?</p>