将对象强制转换为Object()的正确语法是什么?这是一个例子:
Dim obj as Object = {1,2,3} 'integer array or array of anything
Dim objArr as Object() = CType(obj, Object())
我似乎无法找到正确的方法来做到这一点......
答案 0 :(得分:4)
没有语法,因为它是不可能的。您不能将整数数组转换为对象数组,因为整数不是对象。
将对象引用转换为整数数组引用可以正常工作:
Dim objArr As Integer() = CType(obj, Integer())
您可以将数组中的每个整数强制转换为一个对象,以使用整数数组中的值创建一个对象数组:
Dim objArr As Object() = CType(obj, Integer()).Cast(Of Object)().ToArray()
当您编辑问题以包含任何类型的数组时,不仅仅是整数数组,如您所建议的那样,转换为IEnumerable
可以正常工作,因为在下一步中仍然可以将任何类型转换为Object:
Dim objArr As Object() = CType(obj, IEnumerable).Cast(Of Object)().ToArray()
答案 1 :(得分:1)
据我所知,你不能只是将一个Integer数组转换为Object数组。
您可以转换为数组:
Dim objArr As Array = CType(obj, Array)
Dim objArr2 As Object() = objArr.OfType(Of Object)().ToArray()
或者您可以使用Array.ConvertAll:
Dim objArr As Object() = Array.ConvertAll(Of Integer, Object)(obj, Function(t) t)
或者你可以转换为Integer数组,这就是它的真实含义:
Dim objArr as Integer() = CType(obj, Integer())
答案 2 :(得分:0)
我可能会错过上下文的一部分,但从您的示例来看,问题不在于演员本身,而在于您创建对象的方式。
您应该创建一个对象数组,而不是创建对象。
Dim obj As Object() = {1, 2, 3} 'integer array
Dim objArr As Object() = obj
但是,如果您无法在上下文中应用此功能,则可以使用Guffa's answer。