如何将对象强制转换为对象数组

时间:2014-05-05 19:57:26

标签: .net vb.net

将对象强制转换为Object()的正确语法是什么?这是一个例子:

Dim obj as Object = {1,2,3}   'integer array or array of anything
Dim objArr as Object() = CType(obj, Object())

我似乎无法找到正确的方法来做到这一点......

3 个答案:

答案 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