daniele75 ha scritto:
ok, grazie per le spiegazioni...
a questo punto mi chiedo... c'è qualche situazione in cui è preferibile usare il .ToString() (senza parametri) piuttosto che il cast nell'oggetto stringa??? oppure è abbastanza ininfluente??
grazie mille...
daniele

Ciao,
la risposta è implicita. "Ogni oggetto ottiene pertanto il metodo ToString". Il cast è decisamente più oneroso e comunque eviti di poterti trovare in una situazione di boxing - unboxing.

P.S: poi ovviamente, dipende da quello che devi fare.
Modificato da fabrica il 22 ottobre 2010 14.15 -

Fabrizio Canevali
710 messaggi dal 13 novembre 2008
Contributi
certamente che è ben più complesso, hai fatto bene a precisare
 si anche perchè c'è un concorso al quale non partecipo
<polemica>
leggere "ca....." solo per accumulare punti mi fa "in........"
</polemica>

Buon lavoro

Fabrizio Canevali
710 messaggi dal 13 novembre 2008
Contributi
va bene ok, non ci voleva molto a capirlo, ognuno risponde delle proprie azioni e delle proprie risposte

buon lavoro
Senza aver cercato particolari riferimenti sul web, quindi spero di non dire inesattezze, dovrebbe essere molto diverso perchè il forzare una variabile non-stringa a diventare stringa con il cast dovrebbe indicare semplicemente al compilatore di considerare il contenuto di quella variabile come stringa, quindi riservare lo spazio in memoria ecc. senza però effettuare particolari controlli e altro, e comunque non puoi farlo su tutte le classi, ma solo sui valuetype e su alcuni tipi di classe.
La chiamata ad un metodo ToString() a parte essere più pulita dal punto di vista stilistico è sempre meglio a mio avviso perchè consente al compilatore di trovare la migliore modalità di conversione del contenuto della variabile dal tipo originario a stringa, e inoltre essendo un metodo virtual ti offre la possibilità di essere "overriden" cioè di essere completamente riscritto in una classe che erediti da object (cioè tutte), altrimenti normalmente (come per esempio nei casi in cui il cast fallisce) il ToString() ritorna il nome completo della classe incluso il namespace di appartenenza.
93 messaggi dal 30 dicembre 2007
ok, ad un certo punto mi avete mandato un po in confusione e non ho capito a chi fosse indirizzata la polemica di fabrica :)
cmq

object a = 1;
string s = (string)a; //viene eseguito l'unbox

object a = 1;
string s = a.ToString(); //non viene eseguito l'unbox

questo spiega perchè la seconda è più veloce... ero convinto del contrario... grazie a tutti e in bocca al lupo per il concorso!!! :)
daniele
Hai ragione la prossima volta dovrò essere piu esplicito ;D
</polemica>
Modificato da fabrica il 22 ottobre 2010 18.00 -

Fabrizio Canevali
daniele75 ha scritto:

object a = 1;
string s = (string)a; //viene eseguito l'unbox

object a = 1;
string s = a.ToString(); //non viene eseguito l'unbox


Viene o non viene eseguito il Boxing.
Eseguendo il cast a (string) e poi assegnando il valore ad una var string esegue solo il boxing, mentre se era una variale di tipo X compatibile con il cast a (string) e poi assegnato il valore ad una altra variabile di tipo X viene eseguito l'unboxing... o sbaglio?

In merito alla polemica, premetto che partecipo ma ho già VS 2010 Ultimate, quindi non sono interessato alle prime posizioni, era più una curiosità di vedere che livello avrei raggiunto. Sono d'accordo, infatti rivedrei i parametri dei punteggi. Sarebbe meglio avere un punteggio in base alla costanza e competenza nei confronti della community, più che alla quantità.
Comunque non ce l'ho con nessuno in particolare, è solo la mia opinione, e per le conoscienze che ho non merito neanche la posizione che occupo nella graduatoria.
fabrica ha scritto:
<polemica>
leggere "ca....." solo per accumulare punti mi fa "in........"
</polemica>

Non sono pienamente d'accordo con questo, magari si scrivono ca..... per delle lacune nella propria conoscenza, e qualcun'altro con più esperienza può aiutare sia chi ha fatto la domanda, sia chi a risposto non correttamente corregendolo.
Un detto dice "sbagliando s'impara", e secondo il mio modo di vedere le cose, è meglio un utente attivo che sbaglia la risposta, di uno che se ne frega.
Certo che se il fine ultimo sono i punti .... bricconcelli!
Modificato da fileman il 22 ottobre 2010 18.35 -

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.