title: Casting System.Object to boolean
body: <p>Under which circumstances would be <code>(bool) mydata</code> a valid cast when <code>mydata</code> type is <code>System.Object</code>?</p>
  
  <p>I.e., obviously it would be a valid cast if the actual or unrderlying type is a boolean.</p>
  
  <p>But would it be also a valid cast if the underlying type is <code>int</code> or maybe <code>string</code>? E.g.,</p>
  
  <pre><code>int value=1;
  object mydata=value;
  if ((bool) value) { ... }
  </code></pre>
  
  <p>Actually I am wondering how explicit conversions work in C#. Is some kind of reflection used to check if any valid conversion exists even when dealing with <code>object</code> types?</p>