일부 트리 노드에는 태그 객체에 저장된 문자열이 있고 일부 태그는 아무 것도 남지 않는 트리 뷰가 있습니다. 나중에 내가 존재하는 노드에서 문자열을 무언가에 사용하고 싶습니다.Option Strict and Unboxing Object to String
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 객체에서 문자열을 가장 잘 unbox하는 방법에 대해 약간 혼란 스럽다.
오류 팝업은 CStr
을 사용하는 것이 좋습니다.하지만 VB.net에서만 CStr
함수가 VB.net에서만 사용되었다는 인상을 받았으며 실제로는 새로운 코드에 사용해서는 안됩니다. 위의 코드에서 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