我有一个对象类型变量(控件 .Tag),我需要将其转换为结构化类型,并更改其中的成员。这是一个人为但具有代表性的示例:
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?!
我不太记得我的 C 语法,但应该是这样的:
(struct_COLOURS*)AnObject->ILikeRed = true;
关键是我可以将对象投射到某物上并在结果投射中设置成员。似乎 DirectCast 实际上是一个函数,并且没有以我解释它的方式进行转换。
奇怪的是,如果您只想检索成员值,则可以使用 DirectCast:
dim YummyRed AS Boolean = DirectCast(AnObject, struct_COLOURS).ILikeRed
很好!
如果我不能以我想要的方式进行转换,并且我无法更改 Tag 属性的使用(所以请不要建议,这不是一个选项)来存储这些结构,那么设置成员的最快方法是什么?