visual texto significa que numero funciones funcion convertir conversion cint cdbl vb.net function type-conversion

vb.net - texto - * Sutil*¿Diferencias entre las funciones VB y las funciones Convert.To*?



funciones de conversion en visual basic (2)

Al convertir tipos, me he encontrado usando ambas funciones VB y métodos BCL Convert.To *.
P.ej)

  • Cstr() vs. Convert.ToString()
  • CInt() vs. Convert.ToInt32()
  • CDbl() vs. Convert.ToInt64()
  • etc ...

¿Hay alguna diferencia sutil que deba tenerse en cuenta?


Hay otra gran diferencia que acabo de descubrir y creo que vale la pena mencionar aquí, ¡aunque varios años después del OP! CInt({Boolean expression}) evalúa a -1 cuando es True , mientras que Convert.ToInt<n> evalúa a 1.

Esto podría atrapar a cualquiera que haya usado el anterior en una evaluación matemática, por ejemplo:

For i As Integer = 0 To 1 - CInt(processThirdItem) ''Evaluates to -1 (1 - -1 = 2) ''Do stuff... Next

Por lo tanto, usar Convert.ToInt32 en lugar de CInt no funcionaría a menos que haya cambiado el operador de - a + .

Por supuesto, la función If cortocircuito de .NET proporciona una forma mucho mejor de hacerlo:

For i As Integer = 0 to If(processThirdItem, 2, 1) ''Do stuff... Next


Esto ya se ha cubierto en principio, pero sí hay diferencias: básicamente, los ayudantes de VB harán un trabajo adicional para que analice dónde genéricos arrojarán una excepción y, en general, pero no universalmente, los ayudantes de VB son más rápidos (aunque No sé si es significativo) porque realmente son solo azúcar IL. Sazone al gusto.

Editar: Este chico lo cubre mejor que yo.

Editar Redux: Joel Coehoorn también recomienda el precursor del artículo anterior , y aparentemente tiene algunos puntos de referencia bajo la manga en alguna parte.

Joel escribió:

El resumen es el CInt () es un operador, mientras que Convert.ToInt32 () es una función. CInt vive en algún lugar entre (int) x; y Convert.ToInt32 (x) ;.