나는 (.Tag 제어) 나 구조화 된 유형으로 캐스팅하고의 구성원을 변경해야하는 개체 유형 변수가이 인위적인하지만 대표적인 예입니다.VB.NET에서 C 스타일 캐스팅을 수행하려면 어떻게해야합니까?
Public Structure struct_COLOURS
Dim ILikeRed as boolean
Dim ILikeGreen as boolean
End Structure
Dim AnObject as Object = (some source that is struct_COLOURS)
DirectCast(AnObject, struct_COLOURS).ILikeRed = True ' This is not valid syntax?!
내가 기억하지 않습니다 내
(struct_COLOURS*)AnObject->ILikeRed = true;
요점은 내가 결과 캐스트 멤버를 뭔가에 개체를 캐스팅하고 설정할 수 있습니다 : C 구문은 매우 잘하지만,이 같은 것입니다. 그것은 마치 DirectCast가 실제로 함수이고 해석 할 수있는 방식으로 캐스팅하지 않은 것처럼 보입니다. 당신은 단지 멤버 값을 검색하려면
이상하게도, 당신은 DirectCast를 사용할 수 있습니다
dim YummyRed AS Boolean = DirectCast(AnObject, struct_COLOURS).ILikeRed
이 잘입니다!
내가 원하는 방식으로 변환 할 수없고 이러한 구조를 저장하기 위해 Tag 속성을 사용할 수 없다면 (그렇게하지 말고 제안하지 마세요. 옵션이 아닙니다.) 멤버를 설정하는 가장 빠른 방법은 무엇입니까?
박스형이 아니고 구조화 된 것을 어떻게 거기에 넣을 수 있습니까? –
확인. 어떻게 내 구조체를 별도의 형식화 된 배열에 저장하고 태그에는 색인 만 포함되어 있습니까? 관계는 통제의 수명에 대해 일관성이 있습니다. 많은 코드를 변경해야하지만 데이터를 태그 객체 밖으로 옮기는 것이 더 장기적인 목표입니다. 지금 당장 해결하고 싶지 않은 것입니다. –
@Mark 값 타입은'Object'에 저장 될 때 항상 boxed됩니다. 색인을 전역 배열에 저장하는 것이 적절한 해결책이 될 수 있습니다. –