我一直拉着我的頭髮從一些意想不到的行爲可空整數。設置可空整數爲字符串包含什麼都沒有收益0
- 如果我設置一個
Integer
到Nothing
,它成爲Nothing
預期。 - 如果我將
Integer?
設置爲String
即Nothing
,它將變爲0!
當然,無論我是否明確地將String
轉換成Integer?
或不是,我都會得到這個結果。
我意識到我可以很容易地解決這個問題,但我想知道我錯過了什麼。
Dim NullString As String = Nothing
Dim NullableInt As Integer? = CType(NullString, Integer?) 'Expected NullableInt to be Nothing, but it's 0!
NullableInt = Nothing 'This works, of course. NullableInt is Nothing.
編輯:以前我有我的代碼在這裏沒有這樣的明確轉變爲Integer?
,每個人都似乎上被固定/通過混淆。有很多建議Option Strict On會捕獲這種類型的東西。然而,這實際上是一個字符串到整數轉換規則的怪癖,它早於可空類型,但仍然會影響它們。
使用Option Strict On可以及早發現這些錯誤。 – 2010-12-14 17:29:31
爲什麼要將一個字符串變量賦值給可空INteger?同意開啓選項嚴格打開 – 2010-12-14 21:44:58
通過放置選項嚴格打開,您可以一次打開選項嚴格的一個文件。這應該讓你在處理文件時處理錯誤。從長遠來看,這絕對是值得的努力 – 2010-12-15 05:37:28