数组项上的GetType()?

53

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

让我们称其为a,

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

显然,a[0].GetType()会起作用,但数组可能为空,从而导致空引用异常。

2个回答

101

嗯,你可以获取数组的元素类型

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

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


@Kryptos 哇,当然可以工作。我两年前可能发表了一个非常愚蠢的评论,现在我正在删除它。上帝知道那时候哪个错误导致了那样的写作。 - relatively_random
@Kryptos 另一方面,为什么链接文章的底部说它“返回 Array 类的 null 值”? - relatively_random
@relatively_random 或许文档已经过时了... 参考源代码显示,数组的类型构造使用项类型作为“复合类型”: https://referencesource.microsoft.com/#mscorlib/system/reflection/emit/typebuilder.cs,1483 - Kryptos

14

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接