scusate il titolo, forse strano, ma è l'unico sunto che m'è venuto in mente per questo problema.
In pratica con l'overload posso definire più metodi che in base al parametro in ingresso si comportano diversamente ... io ho il problema contrario: il parametro di ingresso sarà sempre stringa, il tipo di ritorno deve essere invece differente a seconda del contenuto della stringa.
La soluzione adottata fino ad ora è stata quella di utilizzare un object come tipo di ritorno, abbastanza universale, essendo la super classe "di tutti", ma c'e' qualcuno che sfugge a questa norma: Hashtable.
codice:public object stringToSomething(string s) { object result; switch(s) { case "1": result = System.Convert.ToInt32(s); break; default: result = new System.Collections.Hashtable(); break; } return result; }
ora sebbene questo esempio faccia schifo e sebbene potrebbe anche andare (visto che il problema che ho è poi e non qui) se ho una variabile di tipo object non riesco ad assegnarla come Hashtable.
object test = stringToSomething("hashtable");
che se stampata mi dirà si che è una System.Collections.Hashtable ma se gli assegno un indice ed un valore (dentro la funzione, non fuori) e provo a stampare
test[0]
mi dirà che l'oggetto test non può avere l'indice 0
mentre aggiungendo a mano, per esempio, la stampa di result[0] nello switch, non esistono problemi.
Come se castasse in fase di ritorno, non so ... il punto di tutto è:
che tipo di ritorno dovrei assegnare per avere un dato non definito come tipo in ritorno funzione ???
spero di essermi spiegato![]()
grazie a tutti![]()