2009-03-03 34 views
0

在C#中,我已经使用结构创建了ArrayList。所以它创建了多维数组列表。如何在C#中查找数组列表是单维还是多维?

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,那么1-D数组列表被创建。其他多维Arraylist正在创建。

现在为了访问alCombined的元素,我类型转换它和访问,就像

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

但是,如果它的1-d的ArrayList则发生错误类型浇铸到ArrayList的是不可能的。

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

在此先感谢。

回答

5

真的没有这样的事,作为一个“多维的ArrayList”。 ArrayLists没有特定的元素类型。你可能有一个元素是一个整数,另一个是一个字符串,另一个是int[],另一个是ArrayList本身。

你的代码的一些建议:

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

如何

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