2009-03-03 59 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) 
{ 
    ... 
}