2012-03-28 35 views
0

在我的winform應用程序中,我有一個包含動態數字字符串數組的數組列表。我需要以某種方式從數組列表中刪除每個字符串數組,然後使用這些字符串數組作爲函數的參數。數組列表中的字符串數組數量可以隨着動態創建而變化。C#空arraylist字符串數組並將它們作爲參數傳遞

的方法聲明:

public void mychartbuilder(string[] Column1, string[] Column2 = null, string[] Column3 = null, string[] Column4 = null) 

以下原因造成的最頭痛的問題。由於列表中存在動態數組,因此我無法確定如何將它們拉出來,然後將它們作爲參數發送到函數中。

foreach (string[] myarray in myArrayList) 
    { 
     string[] copy1 = new string[rcounter]; 
    } 
mymethods.mychartbuilder(//string array parameters will go here) 

在此先感謝。

+1

是否有任何理由你不只是將整個ArrayList傳遞給方法「mychartbuilder」? – firthh 2012-03-28 02:34:17

回答

1
while(arrayList.Count < 4) 
{ 
    arrayList.Add(null); 
} 

mychartbuilder((string[])arrayList[0], (string[])arrayList[1], (string[])arrayList[2], (string[])arrayList[3]); 

請注意,您可以使用List<string[]>而不是ArrayList來避免所有投射。

+0

不知道我跟着你。它看起來好像你的代碼將用null替換我的字符串數組。那是對的嗎?我不想這樣做。那麼看來你正在將列表中的每個元素都轉換爲一個字符串數組。這看起來好像它會工作,但我需要最後三個參數是可選的。 – HendPro12 2012-03-28 02:58:35

+0

它不會用null替換任何東西。如果列表中有一個項目,while循環將運行三次,這意味着將有一個數組和三個空值,它將傳遞一個數組作爲第一個參數,其餘爲null,這與調用完全相同該方法只有一個數組,因爲其他參數是可選的(您只需將它們設置爲空)。如果arrayList有3個項目,那麼只會添加一個空值,並且除了最後一個參數之外的所有參數在方法調用中都是非空的。基本上,它忽略了該方法處理可選參數並提前默認參數。 – Servy 2012-03-28 03:05:12

+1

如果你想實際利用這個事實,該方法有可選參數,你將需要4個if語句,基本上如果list.count <2,否則如果list.count <3,並且調用具有適當數量的參數。這將是非常醜陋的。我的方式更短,同樣有效。 – Servy 2012-03-28 03:07:47

相關問題