2011-02-25 54 views
2

的Visual Basic 2010(快遞)。我可以通過例如最好給這個...當是有必要的數據類型轉換在Visual Basic 2010

如果我從一個文本字符串,並將其分配給整型變量,我認爲你應該使用CINT的內容明確地轉換爲印象一個整數。

intMyCount = CInt(txtUserInput.Text) 

但是,如果我不這樣做,它似乎仍然工作。同樣,如果我有一個整數,它連接成一個標籤的文本屬性,它仍然有效:

lblResults.Text = intMyCount & " number of times." 

,而不是使用intMyCount.ToString.

爲什麼它的工作? VB在可能的情況下進行隱式轉換嗎?是否有示例沒有顯式使用.ToString進行轉換或使用CInt會導致意外的結果?

+0

問題顯得更漂亮。 – Shoban 2011-02-25 02:57:31

+0

@Shoban - 謝謝。必須越來越累:-) – 2011-02-25 02:58:07

回答

4

這是使用遲綁定完成的,而且很危險,因爲如果轉換失敗(並且有很多情況下第一個示例可能會失敗),它會在運行時異常結束。要讓編譯器執行更安全的轉換,請轉至Option Strict On

此外,大部分的時間你不希望使用CInt()將字符串轉換爲int。相反,更喜歡Integer.Parse()Integer.TryParse()。當你格式化你的代碼

+0

+1。此外,OP要求舉例說明,如果不明確轉換可能會導致意外的結果。經典的例子就是你希望根據區域設置來控制字符串的解釋。例如。您總是希望將字符串解釋爲小數點分隔符,而不是考慮PC區域設置。 – MarkJ 2011-02-25 10:48:59

+0

感謝您的解釋! – 2011-02-25 14:35:21

+0

是否有一個合理的解釋(或邏輯解釋)爲什麼有CInt()和Integer.Parse()?不創建程序時,如果有細微的,但不同的方式做,因爲翻譯的字符串一些共同的東西,增加錯誤的概率是多少? – 2011-02-25 14:38:52

1

有些語言輕鬆處理字符串連接這樣的非鑄造的字符串。一些還處理非數字類型來進行計算。有些語言根本無法處理它。然而,作爲一種最佳做法,我會始終將變量轉換爲您想避免使用不正確輸入類型的問題的類型。