Pregunta

Si bien la conversión de tipos, me he encontrado con las dos funciones de VB y BCL Convert.To * métodos.
Por ejemplo,)

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

¿Hay sutiles diferencias que deben tenerse en cuenta?

¿Fue útil?

Solución

Esto ha sido cubierto antes en principio, pero sí hay diferencias: básicamente el VB ayudantes van a hacer un trabajo adicional para que usted consiga el analizar a través de los genéricos, donde se producirá una excepción, y en general, pero no universalmente los ayudantes VB son más rápidos (aunque no sé si es significativamente menos) porque son igual de azúcar IL De Verdad. Sazone al gusto.


Editar: Este tipo cubre mejor que yo puede.

Editar Redux: Joel Coehoorn también recomienda el precursor con el artículo anterior , y al parecer tiene algo bajo la manga evaluación comparativa en alguna parte.

Joel escribió:

  

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

Otros consejos

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

Esto podría atrapar a nadie que está acostumbrado a éste en las evaluaciones de matemáticas, EG:

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

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

función If cortocircuitado

Por supuesto de .NET proporciona ahora una mejor manera de hacer esto:

For i As Integer = 0 to If(processThirdItem, 2, 1)
    'Do stuff...
Next 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top