Я был убежден, что кастинг может при определенных обстоятельствах стать измеримым препятствием на производительность. Это может быть и в том случае, когда мы начинаем иметь дело с некогерентными сетями противного исключения, бросая\ловить.
Учитывая, что я хочу создать более правильную эвристику, когда дело доходит до программирования, мне было предложено задать этот вопрос для гуру .NET: есть ли листинг интерфейса быстрее, чем класс?
Чтобы дать пример кода, предположим, что это существует:
public interface IEntity { IParent DaddyMommy { get; } }
public interface IParent : IEntity { }
public class Parent : Entity, IParent { }
public class Entity : IEntity
{
public IParent DaddyMommy { get; protected set; }
public IParent AdamEve_Interfaces
{
get
{
IEntity e = this;
while (e.DaddyMommy != null)
e = e.DaddyMommy as IEntity;
return e as IParent;
}
}
public Parent AdamEve_Classes
{
get
{
Entity e = this;
while (e.DaddyMommy != null)
e = e.DaddyMommy as Entity;
return e as Parent;
}
}
}
Итак, это AdamEve_Interfaces быстрее, чем AdamEve_Classes? Если да, то на сколько? И, если вы знаете ответ, почему?