До недавнего времени у меня создалось впечатление, что операция CDbl(x) в VB.NET была по существу отлитой (т.е. эквивалентом VB (double)x в С#); но недавнее открытие показало, что это не так.
Если у меня есть эта строка:
Dim s As String = "12345.12345-"
И я делаю это:
Dim d As Double = CDbl(s)
d будет установлено значение -12345.12345! Теперь, не поймите меня неправильно, это очень удобно в моем конкретном сценарии; но я должен признать, что я в замешательстве, почему это работает. В частности, я смущен, потому что:
-
Double.Parseне работает с указанным выше входом. -
Double.TryParseне работает. -
Convert.ToDoubleне работает.
Как CDbl настолько умный?