我有一个名为SampleObject的对象,它包含一个名为StringArray的字符串数组。为了让我访问该数组中的第一个元素,我需要写:
((string[])(SampleObject))[0]
但是,如果我不知道数组的类型,我将如何处理它?</ p>
((SampleObject.GetType())(SampleObject))[0];
我尝试了类似的东西,但它需要一个方法名称。
感谢。
答案 0 :(得分:5)
您可以使用Array.GetValue
- 所有数组类型都派生自Array
,无论元素类型是什么。您可能需要仔细考虑矩形数组,以及具有非零下限的数组。
答案 1 :(得分:1)
虽然Jon的答案是正确的,但如果您有一个正常(一维,从0开始)的引用类型数组,则可以滥用数组协方差。
return ((object[])SampleObject)[3];
返回数组中的第3个元素。如果它不仅会更改元素类型,而且可能更改容器本身,也可以将其强制转换为非泛型IList
。
答案 2 :(得分:0)
如果它们将基于c#对象类,则可以使用GetType() - 这将返回System.Type(请参阅http://msdn.microsoft.com/en-us/library/system.object.gettype.aspx)。否则,您可以将它们基于您自己的基础对象,该基础对象具有为所有可能值定义的类型。
答案 3 :(得分:0)
另一种方法是使用Reflection来确定类型并操纵数据。虽然这适用于所有类型的对象(不仅仅是数组),但对于您描述的场景,我会使用Jon Skeet的解决方案。