2010-07-16 67 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