2009-02-19 21 views

Respuesta

9

Esto ha sido cubierto before en principio, pero sí hay diferencias: básicamente, los ayudantes de VB harán un trabajo adicional para que usted pueda analizar los 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 significativamente así) porque en realidad son solo azúcar IL. Sazone al gusto.


Edit: This guy lo cubre mejor que yo.

Editar Redux: Joel Coehoorn también recomienda el precursor to the above article, y aparentemente tiene algunos puntos de referencia bajo la manga en alguna parte.

Joel escribió:

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

+1

Huh: usted hizo su edición mientras yo estaba investigando mi post - sobre todo buscando (y de no encontrar) el enlace de referencia que mencioné. Es gracioso porque tu enlace es el seguimiento del mismo autor al que publiqué. Si haces otra edición para incluir ambas eliminaré mi publicación a favor de la tuya. –

+1

Hecho, pero no me ofendería si lo editaras en tu conocimiento :) – annakata

+0

Me encantó el resumen de Joel. Gracias – Sung

1

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 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 wouldn No funciona a menos que haya cambiado el operador de - a +.

Por supuesto función de .NET cortocircuitado If ofrece ahora una mejor manera de hacer esto:

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