我需要修改一些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(美国)。所以我认为问题出在其他地方。
答案 0 :(得分:1)
您应该使用以下语法:
Dim MyAmount As Double = dr.Field(Of Double)("Amount")
我不确定你为什么会遇到这种行为 - 你的行也应该有效。
你也可以试试这个:
Dim MyAmount As Double = DirectCast(dr.Item("Amount"), Double)
当遇到像这样的奇怪问题时,总是尝试各种选项来实现相同的结果,进行研究并比较输出。在StackOverflow上回答问题非常有帮助。