2

我(VB.NET 新手)正在对有时会引发异常“将字符串“False”(或“True”)转换为整数类型的函数进行一些代码维护。” 我发现的是与此等价的东西

someVal 是一个字符串,someFun1 返回一个 Integer,而 someFun2 将一个 Integer 作为参数

...
someVal = someVal = someFun1()
...
someFun2(someVal)
...

我认为可能发生的是它试图将 someFun1 的返回值分配给 someVal,然后执行 bool 检查 someVal 是否已更改 - 但我认为这不是需要做的。

我的问题是 - 这个双重赋值 (someVal = someVal = someFun1()) 是否完成了我在 VB.NET 中不知道的任何事情?

另一个注意事项:我意识到有整数到字符串和返回整数的隐式转换,但这不应该引起任何问题,因为这些值应该始终包含一个数值(可以从 Integer 和 String 来回隐式转换,对吗?)不是真或假-据我所知

4

1 回答 1

5

这里的混淆是等于运算符与 VB.NET=中的赋值运算符相同。=在 C# 中,上面的代码相当于

someVal = someVal == someFun1();

其中首先执行布尔等于运算符==,并将结果插入到someVal. 这失败了,因为someValis int, not bool

换句话说,运行时正在比较someVal与 的返回值进行比较someFun1(),返回Trueor False,并且未能将其转换为整数。这不是“双重分配”——它只是一个内联表示

If someVal = someFun1() Then
    someVal = True
Else
    someVal = False
End If

更明显的是,我们试图给Integer变量一个 type 的值Boolean

于 2010-07-16T13:31:57.630 回答