开发者社区> 问答> 正文

如何检查对象是否为某种类型的数组?

这工作正常:

var expectedType = typeof(string); object value = "..."; if (value.GetType().IsAssignableFrom(expectedType)) { ... } 但我怎么检查是否值是不设置一个字符串数组expectedType来typeof(string[])?我想做类似的事情:

var expectedType = typeof(string); object value = new[] {"...", "---"}; if (value.GetType().IsArrayOf(expectedType)) // <--- { ... } 这可能吗? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 13:17:28 352 0
1 条回答
写回答
取消 提交回答
  • 使用Type.IsArray和Type.GetElementType()检查数组的元素类型。

    Type valueType = value.GetType(); if (valueType.IsArray && expectedType.IsAssignableFrom(valueType.GetElementType()) { ... } 当心Type.IsAssignableFrom()。如果要检查类型是否完全匹配,则应检查是否相等(typeA == typeB)。如果要检查给定类型是类型本身还是子类(或接口),则应使用Type.IsAssignableFrom():

    typeof(BaseClass).IsAssignableFrom(typeof(ExpectedSubclass))

    2020-02-09 13:17:42
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载