繁体   English   中英

C#如何访问对象内的数组信息未知类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM