Questo codice C++ verifica se o
è un Node *
e in tal caso, chiama un metodo su d
.Qual è l'equivalente di C# al dynamic_cast di C++?
if (Node * d = dynamic_cast<Node *>(o)) d->do_it();
Qual è la via più breve e/o più efficiente di scrivere l'equivalente in C#?
mi ha battuto ad esso, +1 sulla differenza tra struct e la classe (in termini di validità del 'as') –
perché non dovresti usare l'operatore "è" sui tipi di riferimento ?? 'if (o is Node) {(o as Node) .do_it(); } ' –
@JohnRuiz non c'è motivo per cui tu non possa. Infatti, il secondo metodo funzionerà indipendentemente dal fatto che il nodo sia una struct o una classe – Servy