[英]C# how to access array info unknown type within object
我有一个名为SampleObject的对象,其中包含一个名为StringArray的字符串数组。 为了使我能够访问该数组中的第一个元素,我需要编写:
((string[])(SampleObject))[0]
但是,如果我不知道数组的类型,我将如何处理呢?
((SampleObject.GetType())(SampleObject))[0];
我尝试了类似的方法,但是它需要一个方法名称。
谢谢。
您可以使用Array.GetValue
所有数组类型都派生自Array
,无论元素类型是什么。 但是,您可能需要仔细考虑矩形数组和下限为非零的数组。
尽管乔恩的答案是正确的,但前提是您拥有参考类型的普通(一维,从0开始)数组,但您可以滥用数组协方差。
return ((object[])SampleObject)[3];
返回数组中的第三个元素。 如果它不仅会更改元素类型,而且可能会更改容器本身,也可以将其IList
转换为非通用IList
。
如果它们将基于c#对象类,则可以使用GetType()-这将返回System.Type(请参阅http://msdn.microsoft.com/zh-cn/library/system.object.gettype。 aspx )。 否则,您可以将它们基于自己的基础对象,该基础对象具有为所有可能值定义的类型。
另一种方法是使用反射来确定类型并操纵数据。 尽管这适用于所有类型的对象(不仅是数组),但对于您描述的场景,我将采用Jon Skeet的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.