2012-03-28 8 views
0

In meiner Winform-Anwendung habe ich eine Arraylist mit einer dynamischen Anzahl von String-Arrays. Ich muss jedes String-Array irgendwie aus der Array-Liste entfernen und dann diese String-Arrays als Parameter für eine Funktion verwenden. Die Anzahl der String-Arrays in der Arraylist kann variieren, da sie dynamisch erstellt werden.C# leere Arraylist String Arrays und übergeben sie als Parameter

Die Methodendeklaration:

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

Das folgende ist die größten Kopfschmerzen verursacht. Da eine dynamische Anzahl von Arrays in der Liste vorhanden ist, kann ich nicht bestimmen, wie sie herausgezogen werden und sie dann als Parameter in die Funktion senden.

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

Vielen Dank im Voraus.

+1

Gibt es einen Grund, warum Sie nicht nur die gesamte ArrayList an die Methode "mychartbuilder" übergeben? – firthh

Antwort

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

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

Beachten Sie, dass Sie anstelle einer ArrayList List<string[]> verwenden können, um das gesamte Casting zu vermeiden.

+0

Ich bin mir nicht sicher, ob ich dir folge. Es sieht so aus, als würde Ihr Code meine String-Arrays durch null ersetzen. Ist das korrekt? Ich will das nicht tun. Dann scheint es, dass Sie jedes Element der Liste als String-Array darstellen. Das scheint so zu sein, als würde es funktionieren, aber ich brauche die letzten drei Parameter als optional. – HendPro12

+0

Es wird nichts mit Null ersetzen. Wenn es 1 Element in der Liste gibt, wird die while-Schleife dreimal ausgeführt, was bedeutet, dass es ein Array und drei Nullen gibt und ein Array als erster Parameter und Null als Rest übergeben wird, was genau dem Aufruf entspricht die Methode mit nur einem Array, da die anderen Parameter optional sind (Sie setzen sie einfach auf null). Wenn die ArrayList 3 Elemente hätte, würde nur ein NULL hinzugefügt werden, und alle außer den letzten Parametern würden im Methodenaufruf nicht null sein. Grundsätzlich ignoriert es, dass die Methode optionale Argumente handhabt und die Parameter frühzeitig vorbelegt. – Servy

+1

Wenn Sie tatsächlich die Tatsache nutzen möchten, dass die Methode optionale Parameter hat, müssen Sie 4 if-Anweisungen haben, im Grunde, wenn list.count <2, sonst wenn list.count <3, und Aufruf der Methode mit der entsprechenden Anzahl von Argumente. Es wäre sehr hässlich. Mein Weg ist viel kürzer und ebenso effektiv. – Servy

0

Ich glaube, Sie mit Reflexion gehen können es zu nennen: http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx

public Object Invoke(
Object obj, 
Object[] parameters 
) 

Die invoke Multi-Parameter übernehmen und alles, was Sie brauchen, ist Ihre Arraylist zu Object []