我有
Public stack() As CTest
我想要
Public stack() As Object
后者给出错误“无法将'Object'类型的对象强制转换为'CTest'。”使用时:
Dim thestack As CTest() = testdatabase.getStack
testdatabase.getStack
只返回stack();
Public Function getStack() As Object()
Return stack
End Function
这解决了它,但它并不理想(对我个人而言):
Dim thestack As Object() = testdatabase.getStack
因此,如果我可以保持变量按原样(Public stack() As Object
),然后按照class.stack() = CTest
的方式执行某些操作,我应该可以执行Dim thestack As CTest() = testdatabase.getStack
因为对象数组将以编程方式执行已从Object
更改为CTest
。
这有可能吗?
答案 0 :(得分:0)
解决此问题的一种方法是编写一个接受Object
并返回CTest
的转换函数。函数本身会将Object强制转换为盒装数据类型,将对象上每个属性的值赋给新的CTest对象,然后返回它。像这样:
Function ConvertToCTest(o as Object) as CTest
dim unboxed as ObjectsDataType
unbox = directCast(o ObjectsDataType)
Dim result as CTest
result.Prop1 = unboxed.Prop1
result.Prop2 = unboxed.Prop2
Return result
End Function