Неудачное приведение в C#
Приведение вниз имеет смысл только если объект действительно того типа, к которому мы сужаем переменную.
Явное приведение в скобках при неудаче бросает
InvalidCastException. Ошибку можно поймать
в catch и обработать без падения программы.
Запишем базовый объект и попытку сузить тип:
class User {
}
class Student : User {
}
Приведение к типу потомка завершится исключением:
User user = new User();
try {
Student student = (Student)user;
Console.WriteLine("student");
} catch (InvalidCastException) {
Console.WriteLine("not student");
}
Сохраните в User объект базового класса,
попробуйте сузить тип до Employee
и выведите сообщение, если приведение
завершилось ошибкой приведения типов.