IActionResult и ActionResult

Базовые контроллеры в ASP.NET MVC 5 наследуются от класса ActionResult , а в ASP.NET Core от интерфейса IActionResult. Пишет, что ActionResult это класс, который по-умолчанию реализует интерфейс IActionResult, но почему тогда контроллеры в коре наследуют именно интерфейс? При том что класс тоже как-бы есть, и вполне возможно поменять IActionResult на ActionResult.

IActionResult это интерфейс, а класс ActionResult это его обобщённая реализация. По сути этот интерфейс нужен для того, что б можно было использовать его контент не только в рамках MVC контроллера, котрый ограничен использованием лишь ActionResult.

IActionResult фактически позволяет использовать функционал где угодно, где есть необходимое пространство имён.