我有一個樹視圖,其中一些treenodes有一個字符串保存到他們的標記對象,並且一些標記保留爲空。後來我想在某些地方使用這些字符串作爲它們存在的節點。選項嚴格和拆箱對象到字符串
For Each tn As TreeNode In TreeView1.Nodes
If Not String.IsNullOrWhiteSpace(tn.Tag) Then
Call DoTagStringStuff(tn.Tag)
End If
Next tn
這工作得很好,直到我需要打開選項嚴格,使我的代碼與同事項目兼容。我對如何最好地解開treenode.tag對象的字符串有點困惑。
錯誤彈出窗口建議使用CStr
,但我的印象是CStr
函數僅在VB.net中作爲VB6的返回,並且實際上不應該用於新代碼。如果我在上面的代碼中嘗試tn.Tag.toString
,則在運行時無法計算Nothing.toString
時出現錯誤。
什麼是解決這個問題的正確方法?我是否應該首先使用標籤對象來保存字符串值,或者是否有更好的treenode屬性,不需要取消裝箱我可以使用它?
編輯:我想也許這是正確的?
For Each tn As TreeNode In theNode.Nodes
If tn.Tag IsNot Nothing Then
Call DoTagStringStuff(DirectCast(tn.Tag, String))
End If
Next tn
除了我沒有檢查一個空的或唯一的空白字符串了。
不,CStr()不是倒退。如果您願意,可以使用對象的ToString()方法。它實際上是一個VB6返回的Tag屬性。通常情況下,通過將模型與視圖分離來避免其使用。 –
「標籤」出現在大多數(如果不是全部的話)控件上。我沒有看到在某些情況下使用這個問題。我不知道TS的情況,但它本身不是倒退;)。 – Styxxy