【发布时间】:2011-10-30 15:22:03
【问题描述】:
我有一个对象类型变量(控件 .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 属性的使用(所以请不要建议,这不是一个选项)来存储这些结构,那么设置成员的最快方法是什么?
【问题讨论】:
标签: vb.net ctype directcast