Если у меня есть базовый класс и два производных класса, и я хочу реализовать кастинг между двумя производными классами вручную, есть ли способ сделать это? (В C#)Overriding (cast)
abstract class AbsBase
{
private int A;
private int B;
private int C;
private int D;
}
class Imp_A : AbsBase
{
private List<int> E;
}
class Imp_B : AbsBase
{
private int lastE;
}
Вообще-то я буду литье из Imp_A -> Imp_B, и я хочу, чтобы последнее значение в списке E, чтобы быть «LASTE». Также, если были три или более класса реализации (например, зарплата, почасовая оплата, консультант и бывшие сотрудники).
Независимо от того, является ли это архитектурно обоснованным (я не могу описать все приложение и быть кратким) Является ли это возможным?
Я собирался написать конвертер, за исключением того, что, по моему мнению, конвертер создаст новый объект класса Imp_B, который мне не нужен, потому что «сотрудник» будет только одним из вариантов в любом время.
-Devin
Имейте в виду, что это (очевидно) действительно создаст целый новый объект Imp_B. – mquander
Это прекрасно. Но, как отмечает г-н Маккандер, это новый объект, который, я считаю, неизбежен. Но означает ли это, что «а» не будет GC'd, пока он не выпадет из сферы действия, хотя я никогда больше его не использую (как Imp_A)? – DevinB
Да, он будет собран только в том случае, если он выпадет из сферы действия, и вы больше не будете ссылаться на него. –