abatido y upcast

Soy nuevo enDO# (yOOP). Cuando tengo un código como el siguiente:

class Employee
{
    // some code
}


class Manager : Employee
{
    //some code
}

Pregunta 1: Si tengo otro código que hace esto:

   Manager mgr = new Manager();
   Employee emp = (Employee)mgr;

aquíEmployee es unManager, pero cuando lo lanzo así a unEmployee ¿Significa que lo estoy actualizando?

Pregunta 2:

Cuando tengo variosEmployee objetos de clase y algunos, pero no todos ellos sonManager's, ¿cómo puedo derribarlos cuando sea posible?

Respuestas a la pregunta(5)

Su respuesta a la pregunta