首页 > 解决方案 > VB列表中从'double'到'decimal'和'string'到'double'的转换错误

问题描述

所以我创建了这个名为“菜单”的列表,其中存储了菜单项的名称和价格。我已经使用我声明namestringpriceas的类“MenuItem”完成了此操作decimal。但是我在列表中收到了这个错误,它不能从“double”转换为“decimal”,也不能从“string”转换为“double”。我确实有严格的选项,但即使关闭它,我在运行代码时也会收到此错误。

我试过像这样使用 cdbl() 函数:.cost =cdbl(2.0 * txtburger.text)但它仍然不起作用。

 Dim menu As New List(Of MenuItem) From
     {
         New MenuItem With {.Name = "Burger", .Cost = 2.0 * txtburger.Text},
         New MenuItem With {.Name = "wrap", .Cost = 2.0 * txtwrap.Text},
         New MenuItem With {.Name = "Parmesan", .Cost = 2.5 * txtparmesan.Text},
         New MenuItem With {.Name = "Stirfry", .Cost = 3.0 * txtstirfry.Text},

标签: vb.netlistooperror-handlingtype-conversion

解决方案


.cost =cdbl(2.0 * txtburger.text)

2.0是一个数字

txtburger.Text是一个字符串

字符串和数字不能相乘。CDbl 尚未参与;number * stringVB在将结果传递给 CDbl 之前尝试执行您的操作

仅将文本部分转换为双精度,以便最终执行number * number. 看看Convert.ToDoubleConvert.ToDecimal方法

如果您仍在为此苦苦挣扎,请扔掉所有文本框并用 nunericupdown 控件替换它们,这样您就可以使用它们的 Value 属性(它是一个数字)而不是文本框的 Text (它是一个字符串)


推荐阅读