title: downcast and upcast
body: <p>I am new to <em>C#</em> (and <em>OOP</em>). When I have some code like the following:</p>
  
  <pre><code>class Employee
  {
      // some code
  }
  
  
  class Manager : Employee
  {
      //some code
  }
  </code></pre>
  
  <p><strong>Question 1</strong>: If I have other code that does this:</p>
  
  <pre><code>   Manager mgr = new Manager();
     Employee emp = (Employee)mgr;
  </code></pre>
  
  <p>Here <code>Employee</code> is a <code>Manager</code>, but when I cast it like that to an <code>Employee</code> it means I am upcasting it?</p>
  
  <p><strong>Question 2</strong>:</p>
  
  <p>When I have several <code>Employee</code> class objects and some but not all of them are <code>Manager</code>'s, how can I downcast them where possible?</p>