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)
在此先感谢。
while(arrayList.Count < 4)
{
arrayList.Add(null);
}
mychartbuilder((string[])arrayList[0], (string[])arrayList[1], (string[])arrayList[2], (string[])arrayList[3]);
请注意,您可以使用List<string[]>
而不是ArrayList来避免所有投射。
不知道我跟着你。它看起来好像你的代码将用null替换我的字符串数组。那是对的吗?我不想这样做。那么看来你正在将列表中的每个元素都转换为一个字符串数组。这看起来好像它会工作,但我需要最后三个参数是可选的。 – HendPro12 2012-03-28 02:58:35
它不会用null替换任何东西。如果列表中有一个项目,while循环将运行三次,这意味着将有一个数组和三个空值,它将传递一个数组作为第一个参数,其余为null,这与调用完全相同该方法只有一个数组,因为其他参数是可选的(您只需将它们设置为空)。如果arrayList有3个项目,那么只会添加一个空值,并且除了最后一个参数之外的所有参数在方法调用中都是非空的。基本上,它忽略了该方法处理可选参数并提前默认参数。 – Servy 2012-03-28 03:05:12
如果你想实际利用这个事实,该方法有可选参数,你将需要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到对象[]
是否有任何理由你不只是将整个ArrayList传递给方法“mychartbuilder”? – firthh 2012-03-28 02:34:17