Если возможно, не используйте либо.Попробуйте использовать безопасное для типов решение, которое не включает приведение или dynamic
.
Если это невозможно, приведение лучше, потому что оно более понятное, более безопасное для типов (компилятор может проверить, что Men
на самом деле имеет SomeMenMethod
), исключение в случае ошибки является более ясным и не будет работать случайно (если вы думаете, что у вас есть Men
, но у вас действительно есть Woman
, который реализует тот же метод, онработает, но это, вероятно, ошибка).
Вы спрашивали о производительности.Никто, кроме вас, не может по-настоящему знать производительность вашего конкретного случая.Если вы действительно заботитесь о производительности, всегда измеряйте в обоих направлениях.
Но я ожидаю, что dynamic
будет намного медленнее, потому что он должен использовать что-то вроде мини-компилятора во время выполнения.Он пытается кэшировать результаты после первого запуска, но, скорее всего, он не будет быстрее, чем приведение.