2010-07-16 47 views
2

我(对VB.NET新手)我正在对一个有时会抛出异常的函数做一些代码维护“错误转换字符串”False“(或”True“)来键入Integer。但是我发现了一些相当于该VB.NET任务中的双重任务完成了什么?

someVal是一个字符串,someFun1返回一个整数和someFun2需要一个整数作为参数

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

我想可能发生的是,它正试图分配someFun1的将值返回到someVal,然后执行布尔检查以确定someVal是否已经更改 - 但我不认为这是需要完成的。我的问题是 - 这个双重任务(someVal = someVal = someFun1())完成了我在VB.NET中不知道的任何事情吗?

另一个说明:我意识到有隐式转换为整数的字符串并回到整数,但不应该导致任何问题,因为值应该始终保持一个数值(可以隐式地来回转换来自整数和字符串,对吗?)不是真或假 - 据​​我可以告诉

回答

5

这里的混淆是,等于运算符=是与VB.NET中的赋值运算符=相同。在C#,其中布尔运算符等于==首先进行,并且结果被插入到someVal上面的代码将相当于

someVal = someVal == someFun1(); 

。这失败了,因为someValint,而不是bool

换句话说,运行时与的someFun1()返回值比较someVal,返回TrueFalse,和未能施放该为整数。这不是一个“双重任务” - 它只是一个的

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

直列表示它是更明显的是,我们试图给出一个Integer变量Boolean类型的值。

+0

我刚刚意识到我的变量类型错了,但是相同的原则适用于字符串等。 – 2010-07-16 13:33:01