c#如何在对象中访问未知类型的数组

本文关键字:未知 类型 数组 访问 对象 | 更新日期: 2023-09-27 18:12:19

我有一个名为SampleObject的对象,它保存一个名为StringArray的字符串数组。为了让我访问数组中的第一个元素,我需要写:

((string[])(SampleObject))[0]

然而,如果我不知道数组的类型,我将如何能够接近它?

((SampleObject.GetType())(SampleObject))[0];

我试过这样做,但它需要一个方法名。

谢谢。

c#如何在对象中访问未知类型的数组

您可以使用Array.GetValue -所有数组类型都是从Array派生的,无论元素类型是什么。不过,您可能需要仔细考虑矩形数组,以及下界非零的数组。

虽然Jon的回答是正确的,但是您可以滥用数组协方差,前提是您有一个引用类型的正常(一维,从0开始)数组。

return ((object[])SampleObject)[3];

返回数组中的第三个元素。如果它不仅会改变元素类型,还可能改变容器本身,那么您也可以将其强制转换为非泛型IList

如果它们将基于c#对象类,您可以使用GetType() -这将返回一个System。类型(参见http://msdn.microsoft.com/en-us/library/system.object.gettype.aspx)。否则,您可以基于自己的基对象为所有可能的值定义类型。

另一种方法是使用Reflection来确定类型并操作数据。虽然这适用于所有类型的对象(不仅仅是数组),但对于您描述的场景,我将采用Jon Skeet的解决方案。