【问题标题】:GetType() on Array item?数组项上的GetType()?
【发布时间】:2010-01-18 10:04:13
【问题描述】:

我有一个可能不包含任何项目的初始化数组。

我们称之为a

a 上调用GetType() 显然会返回一个数组类型。是否可以获取数组包含的项目的类型?

显然a[0].GetType() 可以工作,但数组可能为空并导致空引用异常。

【问题讨论】:

    标签: c# arrays


    【解决方案1】:

    嗯,你可以得到element type of the array

    Type type = array.GetType().GetElementType();
    

    (这与获取数组中项目的类型不太一样 - 例如,object[] 可能完全用字符串填充。)

    【讨论】:

    • @Kryptos 哇,它当然有效。两年前我一定发表了一个可笑的愚蠢评论,我现在要删除它。天知道当时是哪个 bug 导致了这个问题。
    • @Kryptos 再说了,为什么链接文章的底部说它“为 Array 类返回 null”?
    • @relatively_random 也许文档已经过时了...参考源确实表明数组的类型构造使用项目类型作为“复合类型”:referencesource.microsoft.com/#mscorlib/system/reflection/emit/…
    【解决方案2】:

    也许Type.GetElementType() 是您所需要的。

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多