Considera il seguente codice:
DerivedClass drbObj = (DerivedClass)obj;
Qui obj
è di tipo Object
e questo è ragionevole poiché Object è il tipo base di ogni Classe in C #.
Qui, poiché il tipo di derObj
è definito in fase di compilazione, qual è la necessità di utilizzare esplicitamente la conversione dei tipi qui. Il compilatore non può prevedere da solo che sarà di DerivedClass
. Capisco che, il tipo Conversion non debba corrispondere al tipo Derived
, ma per scopi pratici, sarà utile solo quanto il tipo Derived
.
Qualcuno potrebbe spiegare con un piccolo esempio ipotetico il motivo per cui la conversione del tipo esplicito è necessaria quando un riferimento di tipo Object viene assegnato a una classe derivata.
Da quanto so, in C, non è necessario eseguire la conversione del tipo Esplicito da void*
a qualsiasi puntatore e il compilatore può gestirlo in base al tipo di puntatore a cui viene assegnato il valore convertito .