【问题标题】:how to find if an arraylist is single dimensional or multi dimensional in C#.?如何在C#中查找arraylist是一维还是多维?
【发布时间】:2009-03-03 09:20:53
【问题描述】:

在 C# 中,我使用结构创建了 ArrayList。所以它创建了多维数组列表。

public struct ParameterValues
{
    public ArrayList al;
};

ArrayList alCombined = new ArrayList();

for(int i=0; i < CONDITION , i++)
    alCombined.Add(obj.pValue.al);

ArrayList alCombined 的维度取决于 CONDITION。如果它为 1,则创建一维数组列表。正在创建其他多维 Arraylist。

现在为了访问 alCombined 的元素,我正在对其进行类型转换并访问,比如

(((ArrayList)al[i])[j])

但如果它是一维数组列表,则会发生错误,因为无法将类型转换为 Arraylist。

所以我需要一个解决方案,或者如何找到它是否是单维/多维数组列表。 仅供参考:它不应该依赖于 CONDITION 变量。比如如果d条件不止一个,那么肯定是多维的。

提前致谢。

【问题讨论】:

    标签: c# .net arrays


    【解决方案1】:

    真的没有“多维数组列表”这样的东西。 ArrayLists 没有特定的元素类型。您可能有一个元素是整数,另一个是字符串,另一个是 int[],另一个是 ArrayList 本身。

    关于您的代码的一些建议:

    • 可变结构是个坏主意。避开他们。很可能你一开始并不真正想要一个结构体,而可变结构体可能会导致各种意外行为。
    • 公共领域是个坏主意。避开他们。字段是一个实现细节,不应成为 API 的一部分。
    • ArrayList 已被有效弃用 - 改用泛型集合。这将使类型信息更加清晰。
    • 您应该设计您的数据结构,以免陷入这种情况。理想情况下,您的代码中应该很少进行执行时类型检查。如果您可以向我们提供更多关于您想要实现的目标的信息,我们可以帮助您重新设计它。

    【讨论】:

      【解决方案2】:

      怎么样

      if(al[i] is ArrayList)
      {
         ...
      }
      

      【讨论】:

        猜你喜欢
        • 2013-04-05
        • 2011-02-15
        • 2018-06-01
        • 2017-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        相关资源
        最近更新 更多