簡體   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