我(VB.NET新手)正在对一个函数进行一些代码维护,这个函数有时会抛出异常"错误转换字符串"False"(或"True")到Integer类型." 我发现的东西与此相当
someVal是一个字符串,someFun1返回一个Integer,someFun2将一个Integer作为参数
...
someVal = someVal = someFun1()
...
someFun2(someVal)
...
Run Code Online (Sandbox Code Playgroud)
我认为可能发生的是它试图将someFun1的返回值分配给someVal,然后执行bool检查someVal是否已经改变 - 但我不认为这是需要做的事情.
我的问题是 - 这个双重赋值(someVal = someVal = someFun1())完成了我在VB.NET中不知道的任何事情吗?
另一个注意事项:我意识到有整数到字符串的隐式强制转换并返回整数,但这不应该导致任何问题,因为值应该始终保持一个数值(可以从Integer和String中隐式地来回转换) ,对吧?)不是对错 - 据我所知
这里的混淆是equals运算=符=与VB.NET中的赋值运算符相同.在C#中,上面的代码相当于
someVal = someVal == someFun1();
Run Code Online (Sandbox Code Playgroud)
==首先执行boolean equals运算符,然后插入结果someVal.这导致失败,因为someVal是int,没有bool.
换句话说,运行时正在someVal与返回值进行比较someFun1(),返回True或者False未能将其转换为整数.这不是"双重任务" - 它只是一个内联表示
If someVal = someFun1() Then
someVal = True
Else
someVal = False
End If
Run Code Online (Sandbox Code Playgroud)
更明显的是,我们试图给Integer变量赋一个类型的值Boolean.
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |