Hasta hace poco tiempo tenía la impresión de que la operación CDbl(x)
en VB.NET era esencialmente una conversión (es decir, el equivalente de VB de (double)x
en C#); pero un descubrimiento reciente ha revelado que este no es el caso.¿Qué está haciendo CDbl?
Si tengo esta cadena:
Dim s As String = "12345.12345-"
Y hago esto:
Dim d As Double = CDbl(s)
d
se establecerá en el valor -12345.12345
! Ahora, no me malinterpreten, esto es bastante conveniente en mi situación particular; pero tengo que admitir que estoy confundido en cuanto a por qué esto funciona. En particular, estoy confundido porque:
Double.Parse
no funciona con la entrada anterior.Double.TryParse
no funciona.Convert.ToDouble
no funciona.
¿Cómo es CDbl
tan inteligente?
Gracias por la respuesta en profundidad. Como programador de VB6 que se convirtió a .NET, siempre traté de hacer las cosas "a la manera .NET" en lugar de utilizar la antigua función vb. Por ejemplo: .substring en lugar de Left, Mid, Right, .ToLower en lugar de LCase, etc. – Jeremy