dr.Item(“Value1”)具有值,但在分配给另一个变量时始终返回0

时间:2014-02-03 21:25:22

标签: vb.net

我需要修改一些VB.net代码。我面临一个奇怪的问题。我正在从DataTable中检索值并尝试将其分配给变量。当我在QuickWatch窗口中检查某些列的值时,它有值但是当我将它分配给变量时,则返回0给变量。以下是导致问题的简单陈述。

Dim MyAmount As Double = Double.Parse(dr.Item("Amount").ToString)

在QuickWatch窗口中,当我检查dr.Item(“Amount”)时,它的值为30.12,并且在执行上述语句后,MyAmount的值为0.可能VB.net的工作有点不同,我不知道?

编辑: 上面提到的陈述没有回报价值,这有点奇怪。以下声明运行得非常好。

Dim tmpVar As String() = dr.Item("Amount").ToString.Split(".")

最新编辑:

我认为它变得更加奇怪。该问题似乎与dr.Item(“Amount”)无关。假设我想通过以下代码将当前文化值存储在变量中,

Dim CultureInformation As String = System.Globalization.CultureInfo.CurrentCulture.DisplayName

现在执行语句后的CutlureInformation变量包含“nothing”,但DisplayName的值为English(美国)。所以我认为问题出在其他地方。

1 个答案:

答案 0 :(得分:1)

您应该使用以下语法:

Dim MyAmount As Double = dr.Field(Of Double)("Amount")

我不确定你为什么会遇到这种行为 - 你的行也应该有效。

你也可以试试这个:

Dim MyAmount As Double = DirectCast(dr.Item("Amount"), Double)

当遇到像这样的奇怪问题时,总是尝试各种选项来实现相同的结果,进行研究并比较输出。在StackOverflow上回答问题非常有帮助。