如何在不知道 C# 中的底层类型的情况下遍历数组

塞拉迈克

假设我有一组对象,其中一些是数组。

我想连接所有值来打印它们,但我不知道数组中元素的类型。

foreach(var item in myList)
{
    var val = item.Property;
    if (val.GetType().IsArray)
    {
        var array = val as IEnumerable<object>;
        val = string.Join(",", array);
    }
    DoSomething(val);
}

如果 val 包含 a string[],则此代码片段将起作用,也适用于 a myClass[]

但是如果它包含一个int[]or double[],则数组将为空,这意味着动态转换失败。

如果 int 或 double 是从 System.TypeValue 继承的,而 System.TypeValue 是从 object 继承的,为什么此代码片段不起作用?

我怎么能做到这一点?

编辑:将代码片段更改为更明确,并避免出现错误的变量使用,因为我错误地简化了我的代码。

加密货币1

在 C# 中是不允许这样做的,更多细节在这里但是您可以转换为non-generic IEnumerable,然后在推送到之前将所有内容转换为 object string.Join()

foreach(var val in myList)
{
    if (val.GetType().IsArray)
    {
        var array = (IEnumerable)val;
        // It's not allowed to set val variable, but I assume it's just an example
        val = string.Join(",", array.Cast<object>());
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不知道原始数组大小的情况下增加动态数组(C ++)的大小?

来自分类Dev

不知道如何在C中检查输入参数

来自分类Dev

如何在不知道C#名称的情况下调用方法?

来自分类Dev

如何在不知道它是否为数组的情况下遍历JSON属性?

来自分类Dev

如何在不知道有多少项的情况下使用foreach遍历多维数组?

来自分类Dev

如果我不知道实际的对象类型,如何在C#中比较两个IEnumerable <T>?

来自分类Dev

如何在不知道Ract Native中的键的情况下遍历json数组并打印值?

来自分类Dev

我已经设置了Web服务,但不知道如何在MVC 5 C#中从中获取数据

来自分类Dev

如何在不知道其确切类型的情况下更新DbContext中的实体?

来自分类Dev

如何在不知道长度的情况下在C中初始化字符串,并继续向其附加字符?

来自分类Dev

如何在不知道其长度的情况下遍历char **

来自分类Dev

在不知道键值的情况下遍历数组内容

来自分类Dev

如何在不知道数组长度的情况下创建数组

来自分类Dev

如何在不知道数组大小的情况下复制二维数组

来自分类Dev

如何在不知道键的情况下提取对象每个值的返回类型

来自分类Dev

如何在不知道类型的情况下从泛型函数调用函数?

来自分类Dev

如何在不知道具体类型的情况下引用变量?

来自分类Dev

如何在不知道输入类型的情况下创建填充矩阵的方法

来自分类Dev

如何在不知道形式参数类型的情况下找到构造函数?

来自分类Dev

Javascript:如何在不知道键名的情况下解析json数组?

来自分类Dev

如何在不知道索引值名称的情况下打印数组的值

来自分类Dev

如何在不知道索引值名称的情况下打印数组的值

来自分类Dev

C#在不知道特定类型的情况下访问通用方法

来自分类Dev

如何在不知道C ++中有多少个可选参数的情况下在循环中使用va_arg?

来自分类Dev

如何在不知道挂载点的情况下知道设备UUID已挂载?

来自分类Dev

不知道如何在VS中更改文本颜色

来自分类Dev

不知道如何在 Java 中重新绘制()

来自分类Dev

如何在不知道iOS中的UUID的情况下检测ibeacon设备?

来自分类Dev

在Objectify中,如何在不知道父键的情况下通过ID加载实体?

Related 相关文章

  1. 1

    如何在不知道原始数组大小的情况下增加动态数组(C ++)的大小?

  2. 2

    不知道如何在C中检查输入参数

  3. 3

    如何在不知道C#名称的情况下调用方法?

  4. 4

    如何在不知道它是否为数组的情况下遍历JSON属性?

  5. 5

    如何在不知道有多少项的情况下使用foreach遍历多维数组?

  6. 6

    如果我不知道实际的对象类型,如何在C#中比较两个IEnumerable <T>?

  7. 7

    如何在不知道Ract Native中的键的情况下遍历json数组并打印值?

  8. 8

    我已经设置了Web服务,但不知道如何在MVC 5 C#中从中获取数据

  9. 9

    如何在不知道其确切类型的情况下更新DbContext中的实体?

  10. 10

    如何在不知道长度的情况下在C中初始化字符串,并继续向其附加字符?

  11. 11

    如何在不知道其长度的情况下遍历char **

  12. 12

    在不知道键值的情况下遍历数组内容

  13. 13

    如何在不知道数组长度的情况下创建数组

  14. 14

    如何在不知道数组大小的情况下复制二维数组

  15. 15

    如何在不知道键的情况下提取对象每个值的返回类型

  16. 16

    如何在不知道类型的情况下从泛型函数调用函数?

  17. 17

    如何在不知道具体类型的情况下引用变量?

  18. 18

    如何在不知道输入类型的情况下创建填充矩阵的方法

  19. 19

    如何在不知道形式参数类型的情况下找到构造函数?

  20. 20

    Javascript:如何在不知道键名的情况下解析json数组?

  21. 21

    如何在不知道索引值名称的情况下打印数组的值

  22. 22

    如何在不知道索引值名称的情况下打印数组的值

  23. 23

    C#在不知道特定类型的情况下访问通用方法

  24. 24

    如何在不知道C ++中有多少个可选参数的情况下在循环中使用va_arg?

  25. 25

    如何在不知道挂载点的情况下知道设备UUID已挂载?

  26. 26

    不知道如何在VS中更改文本颜色

  27. 27

    不知道如何在 Java 中重新绘制()

  28. 28

    如何在不知道iOS中的UUID的情况下检测ibeacon设备?

  29. 29

    在Objectify中,如何在不知道父键的情况下通过ID加载实体?

热门标签

归档