Преобразования типов C#
Недавно начала изучать C#, и возник вопрос по преобразованию типов. Есть два класса
class Person
{
public string? Name { get; set; }
public Person(string? name)
{
Name = name;
}
public void PrintMessage()
{
Console.WriteLine($"Name - {Name}");
}
}
и
class Employee:Person
{
public string? Company { get; set; }
public Employee(string? name, string? company)
:base(name)
{
Company = company;
}
}
И можно сделать такое преобразование
Employee Emp_1 = new Employee("Sam", "Google");
Person Per_1 = Emp_1;
Employee Emp_2 = (Employee)Per_1;
Но если пытаться сделать так
Person person = new Person("Bob");
Employee employee = (Employee) person;
То вылетит ошибка. И вот вопрос, почему так происходит. Ведь по сути, и там и там мы преобразовываем объект класса Person, в объект класса Employee