In C#
è possibile convertire una stringa in Int32 utilizzando sia Int32.Parse
e Convert.ToInt32
. Qual è la differenza tra loro? Quale funziona meglio? Quali sono gli scenari in cui dovrei usare Convert.ToInt32
su Int32.Parse
e viceversa?Qual è la differenza tra Convert.ToInt32 e Int32.Parse?
risposta
Fondamentalmente Convert.ToInt32
usi 'Int32.Parse' dietro le quinte, ma la linea di fondo Convert.ToInt32
Un null
tornerà 0. mentre in Int32.Parse
verrà sollevata un'eccezione.
Convert.ToInt32 (valore stringa)
Da MSDN:
Restituisce un intero a 32 bit firmato equivalente al valore di valore. - oppure - Zero se valore è un riferimento null (Nothing in Visual Basic). Il valore restituito è il risultato del richiamo del metodo Int32.Parse
sul valore.
Il metodo Int32.Parse (stringa s) converte la rappresentazione di stringa di un numero nel suo equivalente intero con segno a 32 bit. Quando s è un riferimento null, genererà ArgumentNullException.
che
metodoConvert.ToInt32 (stringa s) converte la rappresentazione stringa specificata di 32 bit intero con segno equivalente. Questo chiama a sua volta il metodo Int32.Parse(). Quando s è un riferimento null, restituirà 0 anziché generare ArgumentNullException.
se si guarda con Reflector o ILSpy nel mscorlib
si vedrà il seguente codice per Convert.ToInt32
public static int ToInt32(string value)
{
if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);
}
Quindi, internamente usa il int.Parse ma con il CurrentCulture
. E in realtà dal codice è comprensibile perché quando si specifica null
come un parametro questo metodo non genera un'eccezione.
- 1. Int32.Parse() VS Convert.ToInt32()?
- 2. Qual è la differenza tra Convert.Int32() e Int32.Parse()?
- 3. Qual è la differenza tra = e: =
- 4. Qual è la differenza tra Verilog! e ~?
- 5. Qual è la differenza tra? : e ||
- 6. qual è la differenza tra [[], []] e [[]] * 2
- 7. Qual è la differenza tra $ e $$?
- 8. Qual è la differenza tra ("") e (null)
- 9. Qual è la differenza tra dict() e {}?
- 10. Qual è la differenza tra " " e ""?
- 11. Qual è la differenza tra {0} e ""?
- 12. Qual è la differenza tra `##` e `hashCode`?
- 13. Qual è la differenza tra {0} e +?
- 14. Qual è la differenza tra .ToString() e + ""
- 15. qual è la differenza tra:.! e: r !?
- 16. Int32.Parse vs int.Parse
- 17. Qual è la differenza tra null e System.DBNull.Value?
- 18. Qual è la differenza tra i servizi $ parse, $ interpolate e $ compile?
- 19. Qual è la differenza tra System.Linq.Enumerable.WhereListIterator e System.Linq.Enumerable.WhereSelectListIterator?
- 20. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 21. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 22. Qual è la differenza tra il callback e la promessa
- 23. Qual è la differenza tra la sezione .got e .got.plt?
- 24. Qual è la differenza tra la lista() e []
- 25. Qual è la differenza tra GHC e la piattaforma Haskell?
- 26. Qual è la differenza tra sé e la finestra?
- 27. Qual è la differenza tra la cartella vim72 e vimfiles?
- 28. Qual è la differenza tra la serratura e RLock
- 29. Qual è la differenza tra la funzione() {}() e function() {}()
- 30. Qual è la differenza tra la crittografia SHA e AES?
@vanneto: la domanda potrebbe essere un duplicato, ma le risposte non lo sono. – th1rdey3