无需转换即可提取DataGridViewCell值的语法

时间:2016-07-06 19:14:33

标签: vb.net datagridview

我知道我可以这样做:

Dim Amount As Double = CDbl(DGVRow.Cells("Amount").Value)

但我的DGV单元格已经是Double,所以我会在没有转换的情况下得到他的价值。

我已尝试过以下代码(但这不是正确的语法)

Dim Amount As Double = DGVRow.Cells.OfType(Of Double)("Amount").Value

2 个答案:

答案 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,因此不需要进行转换。它会比其他选项更快。