C#空arraylist字符串数组并将它们作为参数传递

问题描述:

在我的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

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 Servy 2012-03-28 03:07:47

我想你可以用反射去调用它:http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx

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

的调用将采取多参数和所有你需要的是改变你的的ArrayList对象[]