小编Mar*_*ley的帖子

如何在VB.NET中进行C风格转换?

我有一个对象类型变量(control .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?!
Run Code Online (Sandbox Code Playgroud)

我不太清楚我的C语法,但它会是这样的:

(struct_COLOURS*)AnObject->ILikeRed = true;
Run Code Online (Sandbox Code Playgroud)

关键是我可以将对象转换为某个对象并在结果转换中设置成员.似乎DirectCast实际上是一个函数,并没有按照我解释它的方式进行转换.

奇怪的是,如果您只想检索成员值,可以使用DirectCast:

dim YummyRed AS Boolean = DirectCast(AnObject, struct_COLOURS).ILikeRed
Run Code Online (Sandbox Code Playgroud)

很好!

如果我不能按照我想要的方式进行转换,并且我无法更改Tag属性的使用(所以请不要建议,这不是一个选项)来存储这些结构,设置成员的最快方法是什么?

vb.net ctype directcast

3
推荐指数
1
解决办法
212
查看次数

标签 统计

ctype ×1

directcast ×1

vb.net ×1