Dim A As String = "53.3"
Dim B As Double
B = DirectCast(A, Double) / 1.14
我收到了一条消息
字符串无法转换为Double
答案 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
注意术语"演员"以与表达式中相同的方式使用"以不同的方式投射某些东西"。这个表达意味着让同样的东西看起来不同,这正是编程中的铸造所做的。它不会更改您引用的对象,而只会更改您引用的对象,即它会创建一个不同类型的引用来访问同一个对象。