DirectCast()函数将变量或表达式从一种类型转换为另一种类型

时间:2017-05-15 01:32:30

标签: vb.net

Dim A As String = "53.3"
Dim B As Double
B = DirectCast(A, Double) / 1.14

我收到了一条消息

  

字符串无法转换为Double

1 个答案:

答案 0 :(得分:2)

DirectCast运算符执行实际转换,而不是转换。这意味着它不会创建不同类型的对象,而只是为同一对象创建不同类型的引用。这意味着您引用的对象必须已经是您将其转换为的类型,例如。

Dim obj As Object = 53.3
Dim dbl As Double = DirectCast(obj, Double)

在这种情况下,正在投射的对象已经是Double,但是由Object类型的变量引用,因此投射有效。

在您的情况下,对象是String,而不是Double,因此无法将其转换为Double类型。您想要从String转换为Double,因此您必须使用执行转化的方法或运算符。这可能是CType,或者在转换为Double时,简称CDbl

Dim A As String = "53.3"
Dim B As Double
B = CDbl(A) / 1.14

注意术语"演员"以与表达式中相同的方式使用"以不同的方式投射某些东西"。这个表达意味着让同样的东西看起来不同,这正是编程中的铸造所做的。它不会更改您引用的对象,而只会更改您引用的对象,即它会创建一个不同类型的引用来访问同一个对象。