Почему C# называет эту перегрузку вместо более конкретной (может быть, переопределить)? [дублировать]C#

Место общения программистов C#
Anonymous
 Почему C# называет эту перегрузку вместо более конкретной (может быть, переопределить)? [дублировать]

Сообщение Anonymous »

У меня есть этот код, родительский класс имеет абстрактный фильтр Bool (EntityComponent Entity) Но в этом классе я предпочитаю реализовать фильтр Bool (базовый объект) Потому что другие также вызывают последнее (последнее также звонят (последнее.

Код: Выделить всё

EntityComponent
- базовый ). Чтобы предотвратить StackOverflow, я подчиняю его в базовый , чтобы можно было вызвать правильную перегрузку:

Код: Выделить всё

protected override bool Filter(EntityComponent entity) => Filter((BaseComponent)entity);

protected bool Filter(BaseComponent entity)
{
return
(AllowBeavers && entity.GetComponentFast())
|| (AllowBots && entity.GetComponentFast());
}
Теперь я удивлен, что VS просит меня удалить актерский состав, и он даже относится к правильному методу при удалении такого состава:
> Filter (Basecomponent) выбирается, когда EntityComponent , несомненно, более подробно? Как это не сделает рекурсию без актера?

Подробнее здесь: https://stackoverflow.com/questions/794 ... aybe-overr

Вернуться в «C#»