C # OOP - Il modo migliore per identificare il tipo di classe in una lista

-5

Supponiamo che io abbia 3 classi; classe A, B che eredita da A e C che eredita anche da A.

E ho una lista mista di istanze B e C contenute in un elenco di A.

Qual è il modo migliore per identificare la classe ereditata durante l'iterazione sull'elenco di A?

1) Memorizza una proprietà enum 'tipo' nelle classi ereditate e la digita staticamente in base a questa proprietà

2) Utilizzare la parola chiave 'è' o 'come' quando si itera l'elenco

    
posta furibaito 18.05.2017 - 06:20
fonte

1 risposta

6

Il modo migliore per identificare il tipo di un oggetto in una lista è di non preoccuparsi di quale tipo hai nella lista. Il punto di polimorfismo è che puoi trattare B e C allo stesso modo. Sanno cosa sono. Non devi chiedere loro. Digli che fanno le cose e decidono come fare da sole. Questo è chiamato dire, non chiedere .

Se hai qualcosa che devi fare a seconda del tipo che hai, qualcosa dovrebbe essere inserito in A, B e C. Non dovrebbe essere gironzolare fuori nel codice usando. Fallo e non hai motivo di chiedere quale hai. Il tuo codice d'uso inizia a diventare molto semplice e rendere tutte le lezioni iniziate ha senso.

Altrimenti potresti anche non fare affatto delle lezioni. È molto lavoro da fare se non hai intenzione di ottenere qualcosa per questo.

    
risposta data 18.05.2017 - 18:16
fonte

Leggi altre domande sui tag