星期一, 3月 08, 2010

變數 '' 已在指派值之前使用

程式裡遇到了"變數 '' 已在指派值之前使用。而且會在執行階段產生 null 參考例外狀況。"這樣的錯誤,google一下,順便貼在這做個筆記好惹....

先來看看msdn上的說明:

錯誤訊息

變數 '' 已在指派值之前使用。而且會在執行階段產生 null 參考例外狀況。
應用程式在程式碼中至少有一個可能的路徑,可以在指派任何值給變數之前先讀取該變數。
如果從未指派變數的值,則變數會保留資料型別的預設值。若是參考資料型別,預設值為 Nothing (Visual Basic)。讀取具有 Nothing 值的參考變數會在某些情況下造成 NullReferenceException
根據預設,這是一個警告訊息。如需隱藏警告或將警告視為錯誤的詳細資訊,請參閱在 Visual Basic 中設定警告
錯誤 ID︰BC42104

若要更正這個錯誤



  • 檢查控制項流程邏輯,並確定變數具有有效值,再將控制項傳遞至讀取它的任何一個陳述式。


  • 保證變數一定會具備有效值的一個方法,是將變數初始化為宣告的一部分。請參閱 Dim 陳述式 (Visual Basic) 中「初始設定」的內容
以上文字內容,我看得懂才有鬼...
還是來看看M$ MVP的解答好惹...以下解答來自MIS2000 Lab.的回應:
 雖然是微軟官方的文件,但也是會有警告訊息的


就連最簡單的宣告字串 Dim myStr As String


在 VS 2005裡面,都可能會出現相同的警告訊息。
變數 'myStr' 已在指派值之前使用。可能會在執行階段產生 null 參考例外狀況。

只好勉為其難,寫成

Dim myStr As String = ""   或是
Dim myStr As String = Nothing 之類的,就可以通過了


題目裡面,Dim dr As SqlDataReader 也把他設定為 = Nothing 好了


警告訊息,畢竟是警告,還是可以正常地 run

您瞧瞧...這不是淺顯易懂嗎XDXD