我知道我可以这样做:
Dim Amount As Double = CDbl(DGVRow.Cells("Amount").Value)
但我的DGV单元格已经是Double
,所以我会在没有转换的情况下得到他的价值。
我已尝试过以下代码(但这不是正确的语法)
Dim Amount As Double = DGVRow.Cells.OfType(Of Double)("Amount").Value
答案 0 :(得分:1)
如果您确定该单元格包含Double
类型的值,请使用DirectCast
Dim Amount As Double = DirectCast(DGVRow.Cells("Amount").Value, Double)
其他方式将直接使用有界数据源的值,正如@Plutonix在评论中解释
答案 1 :(得分:1)
如果您知道它将始终包含Double,则应使用DirectCast
Dim Amount As Double = DirectCast(DGVRow.Cells("Amount").Value, Double)
这些都产生了Double
类型的结果变量Dim value As Object
value = 1.23#
Dim resultDC = DirectCast(value, Double)
Dim resultCT = CType(value, Double)
Dim resultCDBL = CDbl(value)
但幕后有不同的事情发生。 DirectCast是最直接的。
查看此帖子Difference between DirectCast() and CType() in VB.NET,详细介绍了VB.net中转换方法之间的区别。还有一个VB CStr, CDate, CBool, etc. vs. DirectCast for casting without conversion。
基本上,当您知道对象包含您期望的类型时,首选DirectCast,因此不需要进行转换。它会比其他选项更快。